fénykép másolata

Keressen duplikált képeket a Java Cloud SDK segítségével

Agyunk a vizuális feldolgozásnak szenteli magát, és a képek iránti szeretetünk a megismerésünkön és a figyelem képességén múlik. A képek könnyen megragadják a figyelmünket, és számos eszköz, beleértve a mobiltelefonokat, digitális fényképezőgépeket, szkennereket stb., nagy mennyiségű képet készít. Ezenkívül a képek különböző tömörítési algoritmusokkal rendelkeznek, és a raszteres képek nagyon gyakoriak közöttük, mivel kevesebb tárhelyet fogyasztanak. De az idő múlásával a végén ismétlődő fényképeket, redundáns képeket stb. készítünk. Rengeteg alkalmazásunk van, amelyek képesek megkettőzött képek megkeresésére, beleértve a duplikált képkeresőt is. Abban az esetben, ha a Google Fotókban tárolt képeket, próbálja meg használni a Google Photo Duplicate Finder alkalmazást, telepítse a Windows 10 duplikált fotókeresőt vagy a Mac Duplicate Photo Finder alkalmazást (az operációs rendszertől függően). Ebben a cikkben azonban rávilágítunk arra, hogyan fejleszthetünk ki egy fantasztikus duplikált fotókeresőt a REST API segítségével, amely bármilyen platformon használható.

Képfeldolgozási API

A képfeldolgozáshoz számos alkalmazás érhető el, amelyek lehetővé teszik a képfájlok létrehozását, szerkesztését és kezelését. Olyan lehetőségeket is biztosítanak, mint a fordított képkeresési technikákon vagy bármely más algoritmuson alapuló képkeresés. Ha azonban érdekli egy REST API alapú programozott megoldás, amely fordított képkeresésen alapul, akkor az Aspose.Imaging Cloud a határozott választás. Hatékony keresőmotorja segít a fejlesztőknek, hogy bármilyen platformon zökkenőmentesen hozzáadhassanak fordított képkeresési funkciókat az alkalmazásukhoz. El is indíthatja a kép-összehasonlítási műveletet, hogy több más kép között másolatot találjon. A művelet eredményeként a legtöbb hasonló kép listája jelenik meg a következő feltételeknek megfelelően:

  • A hasonlóság mértéke
  • A hasonlóság minimális küszöbe
  • Összehasonlítás algoritmusa

Most ahhoz, hogy hasonló képfeldolgozási és duplikált képkereső képességekkel rendelkezzünk a Java-alkalmazáson belül, az Aspose.Imaging Cloud SDK for Java-t kell használnunk, mivel ez egy Cloud API körüli burkolóanyag. Tehát a következő lépés az, hogy hozzáadjuk a hivatkozást a java projekthez az alábbi információkkal a maven build típusú projekt pom.xml fájljában.

<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>

Ha még nem hozott létre fiókot az Aspose Cloud Dashboard szolgáltatáson keresztül, érvényes e-mail címmel regisztrálhat az ingyenes próbaverzióra. Most jelentkezzen be az újonnan létrehozott fiókkal, és keresse meg/hozza létre az ügyfél-azonosítót és az ügyféltitkot a Cloud Dashboard oldalon. Ezek az adatok hitelesítési célból szükségesek a következő szakaszokban.

Keressen duplikált képeket a Java segítségével

A Reverse Image Search egy olyan technika, amely segít a vizuálisan hasonló képek keresésében a mintakép alapján. Az alábbiakban felsoroljuk a funkció leggyakoribb használati eseteit:

Keressen ismétlődő képet, és távolítsa el a másolatokat Hasonló képek keresése Nem megfelelő tartalom keresése Keressen digitálisan aláírt képeket

API-nk jelenleg támogatja a tartalom alapú képkeresést, a duplikált képkeresést, az egyéni regisztrált címkék szerinti képkeresést, a kép-összehasonlítást és a hasonlóság-észlelést, valamint a képfunkciók kinyerési műveleteit. Most ebben a részben a részleteket fogjuk megvitatni, hogyan lehet megkettőzni a képeket fordított képtechnikával. Most ennek a követelménynek a teljesítése érdekében az AKAZE algoritmust használjuk a jellemzők észlelésére és a RandomBinaryTree algoritmust a jellemzők egyeztetésére a példában. Az alábbi lépéseket követjük az ismétlődő képek megkereséséhez:

  • Töltsön fel képeket a felhőtárhelyre
  • Keresési kontextus létrehozása
  • Képfunkciók kivonata
  • Keressen duplikált képeket

Töltsön fel képeket a felhőtárhelyre

Kérjük, használja a következő kódrészletet a képfájlok feltöltéséhez a helyi meghajtóról a felhőtárhelyre

  • Először is hozzon létre egy ImagingApi objektumot, miközben megadja a ClientID-t és a Client-t
  • Másodszor, olvassa el az összes képfájlt a megadott könyvtárból
  • Csak a képfájlokat szűrje le, és adja hozzá őket a szűrt listához
  • Töltse fel a képeket a felhőtárhelyre az uploadFile(…) metódussal, miközben az UploadFileRequest objektumot használja argumentumként
// Szerezze be a ClientID-t és a ClientSecret-et a https://dashboard.aspose.cloud/ webhelyről
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// Képalkotó objektum létrehozása
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

File directory = new File("/Users/");
//Szerezze be az összes fájlt a mappából
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
    throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}
			 
//Itt állítsa be a szükséges képkiterjesztéseket.
List<String> supportedImageExtensions = Arrays.asList("jpg", "png", "gif", "webp");
			 
int counter =0;
//Csak képfájlok szűrése
List<File> acceptedImages = new ArrayList<>();
for (File file : allFiles) {
    //Elemezze a fájl kiterjesztését
    String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
    //Ellenőrizze, hogy a bővítmény szerepel-e a támogatottImageExtensions listában
    if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
        //Adja hozzá a képet a szűrt listához
        acceptedImages.add(file);
			    
    // töltse be az első PowerPoint-prezentációt
    byte[] bytes = Files.readAllBytes(file.toPath());
	
    // fájlfeltöltési kérés létrehozása
    UploadFileRequest request = new UploadFileRequest(acceptedImages.get(counter).getName(),bytes,null);
    // képfájl feltöltése felhőtárhelyre
    imageApi.uploadFile(request);
    // növelje a fájlszámlálót
    counter+=1;
    }
}

Keresési kontextus létrehozása

  • Először is meg kell adnunk a jellemző észlelési algoritmust akaze néven
  • Másodszor, adja meg a tulajdonságillesztés algoritmusát randomBinaryTree-ként
  • Harmadszor, hozzon létre képkeresési kérelmet a CreateImageSearchRequest objektum segítségével
  • Most hozza létre a keresési környezet létrehozásának állapotát a createImageSearch(…) metódussal
// adjon meg algoritmust a jellemzők észleléséhez
String detector = "akaze";
// adjon meg algoritmust a jellemzőillesztéshez
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

// Képkeresési kérelem létrehozása
CreateImageSearchRequest createSearchContextRequest = new CreateImageSearchRequest(detector,matchingAlgorithm, folder, storage);
// keresési kontextus állapot létrehozása 
SearchContextStatus status = imageApi.createImageSearch(createSearchContextRequest);
			  
// kapja meg a keresési kontextus állapotazonosítóját
String searchContextId = status.getId();

Képfunkciók kivonata

Itt az ideje, hogy kinyerjük a képek funkcióit, és hozzáadjuk őket a keresési kontextushoz.

// Bontsa ki a képek jellemzőit, és adja hozzá őket a keresési kontextushoz
for (File file : allFiles) 
{
    CreateImageFeaturesRequest request = new CreateImageFeaturesRequest(searchContextId, null, null, "internal", null,null);
		imageApi.createImageFeatures(request);
}

Keressen duplikált képeket

  • Adja meg a hasonlósági küszöbértéket
  • Másodszor, hozzon létre duplikált képkészletet az ImageDuplicatesSet objektum segítségével
  • Most ismételje meg a duplikált képek listáját, és keresse meg a képek hasonlóságát a getSimilarity(…) módszerrel
// adja meg a hasonlósági küszöbértéket
Double similarityThreshold = 90.0;
			    
// duplikált képkészlet létrehozása
ImageDuplicatesSet result = imageApi.findImageDuplicates(
    new FindImageDuplicatesRequest(status.getId(), similarityThreshold, folder, storage));

// nyomtassa ki a számláló ismétlődő képeket
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());
    }
}

Keresse meg a Photo Duplicate-t a cURL-parancsok segítségével

Ebben a szakaszban kihasználjuk a cURL parancsok használatát a REST API-k parancssori terminálon keresztüli eléréséhez. Most előfeltételként először létre kell hoznunk egy JWT hozzáférési tokent (az ügyfél hitelesítő adatai alapján), miközben végrehajtjuk a következő parancsot.

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"

Ez a lépés azt várja, hogy az összes kép feltöltésre kerüljön a felhőtárhelyre, és most létre kell hoznunk a keresési kontextusazonosítót a CreateImageSearch API-híváson keresztül. Kérjük, hajtsa végre a következő parancsot

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>"

Választest

{
  "id": "0b9ac539-07fb-462a-91cb-8a8d5069ba4d",
  "searchStatus": "Idle"
}

Kérjük, hajtsa végre a következő parancsot a képmásolatok kereséséhez a FindImageDuplicates API-hívás segítségével. A következő parancsban a fent generált keresési kontextusazonosító kerül felhasználásra.

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>"

Következtetés

Ebből a cikkből megtudtuk, hogyan találhat meg ismétlődő képeket a Java Cloud SDK használatával. Hasonlóképpen megtanultuk, hogy a cURL parancsok miként szolgálhatnak duplikált képkeresőként. Abban az esetben, ha ki kell próbálnia ezeket az API-kat a böngészőn belül, próbálja meg a swagger API Reference használatával. Hasonlóképpen javasoljuk, hogy tanulmányozza a Termékdokumentációt, hogy megismerje az API által kínált egyéb izgalmas funkciókat. Kérjük, vegye figyelembe, hogy az összes Cloud SDK-nk MIT-licenc alatt van közzétéve, ezért fontolóra veheti a teljes forráskód letöltését a GitHub oldalról, és az igényeinek megfelelően módosíthatja. Bármilyen probléma esetén megfontolhatja, hogy felkeressen minket a gyors megoldás érdekében az ingyenes terméktámogatási fórumon.

kapcsolódó cikkek

Kérjük, látogasson el az alábbi linkekre, ha többet szeretne megtudni erről: