
Finden Sie doppelte Bilder mit Java Cloud SDK
Unser Gehirn widmet sich der visuellen Verarbeitung und unsere Liebe zu Bildern liegt in unserer Wahrnehmung und Aufmerksamkeit. Die Bilder können unsere Aufmerksamkeit leicht erregen, und viele Geräte, einschließlich Mobiltelefone, Digitalkameras, Scanner usw., erzeugen eine große Menge an Bildern. Außerdem haben Bilder unterschiedliche Komprimierungsalgorithmen, und Rasterbilder sind unter ihnen sehr verbreitet, da sie weniger Speicherplatz verbrauchen. Aber im Laufe der Zeit erstellen wir immer noch doppelte Fotos, überflüssige Bilder usw. Wir haben eine Fülle von Anwendungen, die die Möglichkeit bieten, doppelte Bilder zu finden, einschließlich der Suche nach doppelten Bildern. Falls Sie Bilder in Google Fotos gespeichert haben, können Sie versuchen, Google Photo Duplicate Finder zu verwenden, Duplicate Photo Finder Windows 10 oder Duplicate Photo Finder Mac zu installieren (abhängig von Ihrem Betriebssystem). In diesem Artikel werden wir jedoch beleuchten, wie Sie mit der REST-API einen großartigen Duplikat-Foto-Finder entwickeln, der auf jeder Plattform verwendet werden kann.
- Bildverarbeitungs-API
- Finden Sie doppelte Bilder mit Java
- Finden Sie Fotoduplikate mit cURL-Befehlen
Bildverarbeitungs-API
Für die Bildverarbeitung stehen eine Vielzahl von Anwendungen zur Verfügung, die die Funktionen zum Erstellen, Bearbeiten und Manipulieren von Bilddateien bieten. Sie stellen auch die Fähigkeiten bereit, einschließlich einer Bildsuche basierend auf umgekehrten Bildsuchtechniken oder einem beliebigen anderen Algorithmus. Wenn Sie jedoch an einer REST-API-basierten programmatischen Lösung interessiert sind, die auf umgekehrter Bildsuche basiert, dann ist Aspose.Imaging Cloud die definitive Wahl. Die leistungsstarke Suchmaschine hilft Entwicklern, Funktionen für die umgekehrte Bildsuche nahtlos in ihre Anwendung auf jeder Plattform einzufügen. Sie können sogar einen Bildvergleichsvorgang starten, um ein Fotoduplikat unter mehreren anderen Bildern zu finden. Als Ergebnis dieser Operation erhalten Sie die Liste der ähnlichsten Bilder gemäß den folgenden Bedingungen:
- Grad der Ähnlichkeit
- Die minimale Ähnlichkeitsschwelle
- Vergleichsalgorithmus
Um jetzt ähnliche Bildverarbeitungs- und Suchfunktionen für doppelte Bilder in der Java-Anwendung zu haben, müssen wir Aspose.Imaging Cloud SDK for Java verwenden, da es ein Wrapper um die Cloud-API ist. Der nächste Schritt besteht also darin, seine Referenz im Java-Projekt hinzuzufügen, indem die folgenden Informationen in pom.xml des Maven-Build-Typ-Projekts eingefügt werden.
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>http://artifact.aspose.cloud/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging-cloud</artifactId>
<version>22.4</version>
</dependency>
</dependencies>
Wenn Sie jetzt kein Konto über Aspose Cloud Dashboard erstellt haben, können Sie sich über eine gültige E-Mail-Adresse für eine kostenlose Testversion anmelden. Melden Sie sich jetzt mit dem neu erstellten Konto an und suchen/erstellen Sie die Client-ID und das Client-Geheimnis unter Cloud Dashboard. Diese Angaben werden für Authentifizierungszwecke in den folgenden Abschnitten benötigt.
Finden Sie doppelte Bilder mit Java
Die umgekehrte Bildsuche ist eine Technik, die Ihnen hilft, visuell ähnliche Bilder basierend auf Ihrem Beispielbild zu suchen. Nachfolgend sind die häufigsten Anwendungsfälle für diese Funktion aufgeführt:
Suchen Sie nach doppelten Bildern und entfernen Sie die Duplikate Suchen Sie nach inhaltsähnlichen Bildern Suchen Sie nach unangemessenen Inhalten Suchen Sie nach digital signierten Bildern
Unsere API unterstützt derzeit die inhaltsbasierte Bildsuche, die Suche nach doppelten Bildern, die Bildsuche nach benutzerdefinierten registrierten Tags, den Bildvergleich und die Ähnlichkeitserkennung sowie Extraktionsvorgänge für Bildmerkmale. In diesem Abschnitt werden wir nun die Details besprechen, wie Sie doppelte Bilder mit der Reverse-Image-Technik finden. Um diese Anforderung zu erfüllen, verwenden wir im Beispiel den AKAZE-Algorithmus für die Merkmalserkennung und den RandomBinaryTree-Algorithmus für den Merkmalsabgleich. Gehen Sie folgendermaßen vor, um die doppelten Bilder zu finden:
- Laden Sie Bilder in den Cloud-Speicher hoch
- Suchkontext erstellen
- Bildmerkmale extrahieren
- Finden Sie doppelte Bilder
Laden Sie Bilder in den Cloud-Speicher hoch
Bitte verwenden Sie das folgende Code-Snippet, um Bilddateien vom lokalen Laufwerk in den Cloud-Speicher hochzuladen
- Erstellen Sie zunächst ein Objekt von ImagingApi, während Sie ClientID und Client angeben
- Lesen Sie zweitens alle Bilddateien aus dem angegebenen Verzeichnis
- Filtern Sie nur Bilddateien und fügen Sie sie der gefilterten Liste hinzu
- Laden Sie die Bilder mit der uploadFile(…)-Methode in den Cloud-Speicher hoch, während Sie das UploadFileRequest-Objekt als Argument verwenden
// Holen Sie sich ClientID und ClientSecret von https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// Imaging-Objekt erstellen
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
File directory = new File("/Users/");
//Holen Sie sich alle Dateien aus dem Ordner
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}
//Stellen Sie hier die erforderlichen Bilderweiterungen ein.
List<String> supportedImageExtensions = Arrays.asList("jpg", "png", "gif", "webp");
int counter =0;
//Filtern Sie nur Bilddateien heraus
List<File> acceptedImages = new ArrayList<>();
for (File file : allFiles) {
//Analysieren Sie die Dateierweiterung
String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
//Überprüfen Sie, ob die Erweiterung in den unterstützten ImageExtensions aufgeführt ist
if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
//Fügen Sie das Bild der gefilterten Liste hinzu
acceptedImages.add(file);
// Laden Sie die erste PowerPoint-Präsentation
byte[] bytes = Files.readAllBytes(file.toPath());
// Datei-Upload-Anfrage erstellen
UploadFileRequest request = new UploadFileRequest(acceptedImages.get(counter).getName(),bytes,null);
// Bilddatei in den Cloud-Speicher hochladen
imageApi.uploadFile(request);
// Dateizähler erhöhen
counter+=1;
}
}
Suchkontext erstellen
- Zuerst müssen wir den Merkmalerkennungsalgorithmus als akaze angeben
- Geben Sie zweitens den Algorithmus für den Merkmalsabgleich als randomBinaryTree an
- Erstellen Sie drittens eine Bildsuchanfrage mit dem CreateImageSearchRequest-Objekt
- Erstellen Sie nun den Status zum Erstellen des Suchkontexts über die Methode createImageSearch(…).
// Geben Sie den Algorithmus für die Erkennung von Merkmalen an
String detector = "akaze";
// Geben Sie den Algorithmus für den Merkmalsabgleich an
String matchingAlgorithm = "randomBinaryTree";
String folder = null; // File will be saved at the root of the storage
String storage = null; // We are using default Cloud Storage
// Bildsuchanfrage erstellen
CreateImageSearchRequest createSearchContextRequest = new CreateImageSearchRequest(detector,matchingAlgorithm, folder, storage);
// Suchkontextstatus erstellen
SearchContextStatus status = imageApi.createImageSearch(createSearchContextRequest);
// Holen Sie sich die Status-ID des Suchkontexts
String searchContextId = status.getId();
Bildmerkmale extrahieren
Jetzt ist es an der Zeit, Bildmerkmale zu extrahieren und sie dem Suchkontext hinzuzufügen.
// Extrahieren Sie Bildmerkmale und fügen Sie sie dem Suchkontext hinzu
for (File file : allFiles)
{
CreateImageFeaturesRequest request = new CreateImageFeaturesRequest(searchContextId, null, null, "internal", null,null);
imageApi.createImageFeatures(request);
}
Finden Sie doppelte Bilder
- Geben Sie den Ähnlichkeitsschwellenwert an
- Erstellen Sie zweitens einen doppelten Bildsatz mit dem ImageDuplicatesSet-Objekt
- Durchlaufen Sie nun die Liste der doppelten Bilder und finden Sie die Bildähnlichkeit mit der Methode getSimilarity(…).
// Ähnlichkeitsschwellenwert angeben
Double similarityThreshold = 90.0;
// Erstellen Sie einen doppelten Bildsatz
ImageDuplicatesSet result = imageApi.findImageDuplicates(
new FindImageDuplicatesRequest(status.getId(), similarityThreshold, folder, storage));
// Drucken Sie die Anzahl der doppelten Bilder
System.out.println("Duplicates Set Count: " + result.getDuplicates().size());
for (ImageDuplicates duplicates : result.getDuplicates())
{
System.out.println("Duplicates:");
for (SearchResult duplicate : duplicates.getDuplicateImages())
{
System.out.println("ImageName: " + duplicate.getImageId() +
", Similarity: " + duplicate.getSimilarity());
}
}
Finden Sie Fotoduplikate mit cURL-Befehlen
In diesem Abschnitt nutzen wir cURL-Befehle für den Zugriff auf REST-APIs über das Befehlszeilenterminal. Als Voraussetzung müssen wir nun zunächst ein JWT-Zugriffstoken (basierend auf Client-Anmeldeinformationen) generieren, während wir den folgenden Befehl ausführen.
curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bb959721-5780-4be6-be35-ff5c3a6aa4a2&client_secret=4d84d5f6584160cbd91dba1fe145db14" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"
Dieser Schritt erwartet, dass alle Bilder in den Cloud-Speicher hochgeladen werden, und jetzt müssen wir eine Suchkontext-ID über den API-Aufruf CreateImageSearch erstellen. Bitte führen Sie den folgenden Befehl aus
curl -v -X POST "https://api.aspose.cloud/v3.0/imaging/ai/imageSearch/create?detector=akaze&matchingAlgorithm=randomBinaryTree" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>"
Antworttext
{
"id": "0b9ac539-07fb-462a-91cb-8a8d5069ba4d",
"searchStatus": "Idle"
}
Bitte führen Sie den folgenden Befehl aus, um Bildduplikate mit dem FindImageDuplicates-API-Aufruf zu finden. Im folgenden Befehl wird die oben generierte Suchkontext-ID verwendet.
curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/ai/imageSearch/da150333-57b4-4371-b13d-4889578ce2bd/findDuplicates?similarityThreshold=90" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>"
Fazit
In diesem Artikel haben wir die Details zum Auffinden doppelter Bilder mit Java Cloud SDK kennengelernt. Ebenso haben wir gelernt, wie cURL-Befehle als Sucher für doppelte Bilder dienen können. Falls Sie diese APIs im Browser ausprobieren müssen, versuchen Sie es bitte mit der swagger API Reference. Ebenso empfehlen wir dringend, die Produktdokumentation zu lesen, um andere spannende Funktionen kennenzulernen, die von dieser API angeboten werden. Bitte beachten Sie auch, dass alle unsere Cloud-SDKs unter MIT-Lizenz veröffentlicht werden, sodass Sie in Betracht ziehen können, den vollständigen Quellcode von GitHub herunterzuladen und ihn gemäß Ihren Anforderungen zu ändern. Bei Problemen können Sie sich für eine schnelle Lösung über das kostenlose Produkt-Support-Forum an uns wenden.
In Verbindung stehende Artikel
Bitte besuchen Sie die folgenden Links, um mehr darüber zu erfahren: