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
- Keressen duplikált képeket a Java segítségével
- Keresse meg a Photo Duplicate-t a cURL-parancsok segítségével
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>https://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: