Erstellen wir ein Datei-Upload-System mit der Azure Computer Vision-API und dem Java SDK von Azure Storage

Das ist Domo. Es tut mir Leid.

Ich möchte ein einfaches System mit der Computer Vision-API, einem der Azure Cognitive Services, und dem Microsoft Azure Storage SDK für Java, einem der Java SDKs für Azure, erstellen.

Agenda »Was ich diesmal gemacht habe

Was ich diesmal gemacht habe

Dieses Mal habe ich ein einfaches Datei-Upload-System erstellt. Wie auch immer, ich habe es mit dem ersten Versuch geschafft, also habe ich es nicht geschafft. Untitled.png

Funktion (1): Laden Sie eine Datei vom Bildschirm hoch und zeigen Sie sie auf dem Bildschirm an Funktion (2): Die hochgeladene Datei erstellt automatisch ein Miniaturbild und speichert es gleichzeitig.

Die Grundlage des Systems ist Spring Boot, und die HTML-Anzeige und der Formulardatenaustausch sind Thymeleaf. Ich habe Tutorials verwendet /2.1/usingthymeleaf_ja.html # Einführung in thymeleaf). Verwenden Sie das Azure SDK in Spring Boot, um mit Storage zu interagieren.

Klicken Sie hier für das fertige Bild. Vielen Dank, dass Sie die BootStrap-Vorlage verwendet haben.

Wenn Sie eine Datei aus dem Datei-Upload-Teil auf der linken Seite hochladen スクリーンショット 2016-12-27 22.12.13.png

Weitere Dateien werden angezeigt スクリーンショット 2016-12-27 22.14.35.png

Klicken Sie hier, um das Originalbild anzuzeigen スクリーンショット 2016-12-27 22.17.03.png

Funktion zur Erstellung von Miniaturansichten der Computer Vision API von Cognitive Services

Dieses Mal habe ich Computer Vision API verwendet, um das Miniaturbild zu verarbeiten. Die Computer Vision-API war ursprünglich eine API zum Unterscheiden von Gesichtern und Gesichtsausdrücken von Personen und zum Analysieren und Klassifizieren des Bildes. Als Nebenprodukt dieser Funktion wurde eine Funktion namens "Erstellen eines schönen Miniaturbilds" verwendet. Es hat auch.

Es ist in Ordnung, wenn Sie sich "gutes Gefühl" als "leicht zu verstehen, was auf dem Bild ist" vorstellen können. Wenn das Motiv nach rechts verschoben wird und Sie das Bild zuschneiden, ohne darüber nachzudenken, erhalten Sie ein Miniaturbild, von dem Sie nicht wirklich wissen, was das Bild ist. Die Computer Vision API analysiert die Position des Motivs, schneidet den Bereich um das Motiv auf die angegebene Größe zu und erstellt ein Miniaturbild.

Zum Beispiel dieses Foto buzz.jpg

Wenn Sie das Miniaturbild oben links ausschneiden, ohne an etwas zu denken, sieht es wie ↓ aus und Sie erhalten ein Miniaturbild, von dem Sie nicht wissen, was das Bild ist. buss1.jpg

Wenn Sie Computer Vision analysieren lassen und ein Miniaturbild erstellen, sieht es "gut" aus ↓ IMG_1351のコピー2.jpg

Wenn Sie verschiedene Dinge mit Ihren eigenen Fotos ausprobieren möchten, gibt es eine Demoseite. Probieren Sie es also bitte aus. Wenn Sie andere Gebühren und andere Funktionen sehen möchten, lesen Sie bitte hier.

Cognitive Services funktioniert, indem die API direkt aufgerufen wird.

Verwenden Sie Speicher aus dem Java SDK

Azure-Speicher ist ein Dateispeicherdienst. Daten können in verschiedenen Formen wie BLOB / Datei / Warteschlange / Tabelle gespeichert werden. In diesem System wird ein Container (Verzeichnis) in diesem Speicher erstellt und das Originalbild und das Miniaturbild werden als BLOB gespeichert.

Dieses Mal habe ich eines der SDKs verwendet Microsoft Azure Storage SDK für Java. Für jeden Dienst gibt es verschiedene andere Java-SDKs für Azure. Wählen Sie daher unbedingt das SDK für den Dienst aus, den Sie verwenden möchten. Das SDK für Java ist im Maven-Repository verfügbar (http://search.maven.org/#search%7Cga%7C3%7CAzure).

Es ist in Ordnung, wenn Sie eine Abhängigkeit mit Gradle hinzufügen.

dependencies {
・ ・ ・ ・ ・ ・
          compile 'com.microsoft.azure:azure-storage:4.0.0'
・ ・ ・
}

Unter hier finden Sie ein Beispiel für die Verwendung. Weitere Java-bezogene Unterstützung finden Sie unter hier.

Verschiedene Gefühle, die ich tatsächlich ausprobiert habe

Es gibt eine Obergrenze für die Bildgröße, die mit Computer Vision verwendet werden kann, aber diesmal gibt es keinen Anpassungs- oder Überprüfungsprozess für die Bildgröße ... Das Hochladen eines Bildes mit einer Dateigröße, die größer als die Obergrenze ist, ist also ein Systemfehler. Wird passieren ... Ich möchte es später verbessern. .. ..

Was das Java SDK angeht, war ich nicht sicher, welches ich verwenden sollte, da die Informationen anfangs knapp waren und ich mir das Maven-Repository ansah, aber als ich gefunden hatte, wonach ich suchte, stellte ich einfach die Abhängigkeiten ein. Ich konnte es ohne große Probleme verwenden. Ich konnte Dateien hochladen und eine Liste reibungslos erhalten.

Ich dachte, ich sollte es nicht tun Computer Vision Thumbnail API-Demoseite. Da die Antwort binär ist, wird sie mit verstümmelten Zeichen zurückgegeben. Es war auch in Java Code Sample, aber anscheinend ist es "EntityUtils.toString". Es ist wie. Wenn Sie die Bilddaten in eine Zeichenfolge konvertieren, ist dies der Fall. Da es sich um eine Demoseite der API handelt, möchte ich, dass Sie in der Antwort ein Bild sehen.

Übrigens ist es erforderlich, die Entität (erfasste Bilddaten) zu "getContent ()", um das Java-Codebeispiel für das Dokument so wie es ist zu verwenden. Es sieht so aus ..

Schließlich gab ich [GitHub] den Code, den ich dieses Mal erstellt hatte (https://github.com/mahya8585/ComputerVisionSandbox). Um ehrlich zu sein, wird es nur unordentlich, deshalb möchte ich noch einige Korrekturen vornehmen und README.

Zusammenfassung

Da sowohl in Azure Storage als auch in Computer Vision immer noch wenig Informationen zu Java vorhanden sind, hielt ich es für gut, wenn der Schwellenwert gesenkt und weiter verbessert würde. Die aktuelle Situation ist auch, dass nicht alle Azure-Dienste von Java aus verwendet werden können, und es ist häufig der Fall, dass Java (und Python) nicht mit dem Dienst verwendet werden können, den Sie verwenden möchten. Daher würde ich gerne mehr verfügbare Bereiche sehen.

Das war alles.

Recommended Posts

Erstellen wir ein Datei-Upload-System mit der Azure Computer Vision-API und dem Java SDK von Azure Storage
Laden Sie Dateien mit Java HttpURLConnection hoch
Erstellen wir eine REST-API mit WildFly Swarm.
Erstellen wir eine vielseitige Dateispeicher (?) - Operationsbibliothek, indem wir die Dateispeicherung / -erfassung mit Java abstrahieren
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Basisdatei]
[Rails API + Vue] Laden Sie Bilder mit Active Storage hoch und zeigen Sie sie an
[Java] Erstellen Sie eine temporäre Datei
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Bäume hinzufügen und generieren]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [9. Bäume hinzufügen und generieren]
[Java] Lass uns einen Minecraft Mod 1.14.4 erstellen [8. Erz hinzufügen und erzeugen]
Erstellen Sie ein Java-Projekt mit Eclipse
[Java] Erstellen Sie mit dem Befehl jar eine JAR-Datei, die sowohl komprimiert als auch nicht komprimiert ist
[Java] Erstellen und Anwenden eines Folienmasters
Lassen Sie uns eine Java-Entwicklungsumgebung erstellen (Aktualisierung)
Erstellen Sie mit Grape einen RESTful-API-Service
Lassen Sie uns mit Javas Timer einen zeitgesteuerten Prozess erstellen! !!
[Java] Erstellen Sie so etwas wie eine Produktsuch-API
Versuchen Sie, die Cloud Vision-API von GCP in Java zu verwenden
Lassen Sie uns mit Java ein supereinfaches Webframework erstellen
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [Einführung]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Einführung]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [99. Mod-Ausgabe]
Erstellen Sie in Rails 6 einen Drag-and-Drop-Markdown-Editor (mit Active Storage, SimpleMDE und Inline-Anhang).
Erstellen Sie ein Java-Servlet und eine JSP-WAR-Datei für die Bereitstellung auf Apache Tomcat 9 mit Gradle