Մեր ուղեղը իրեն նվիրում է տեսողական մշակմանը, իսկ պատկերների հանդեպ մեր սերը կապված է մեր ճանաչողության և ուշադրություն դարձնելու կարողության հետ: Պատկերները կարող են հեշտությամբ գրավել մեր ուշադրությունը, և շատ սարքեր, ներառյալ բջջային հեռախոսները, թվային տեսախցիկները, սկաներները և այլն, ստեղծում են մեծ քանակությամբ պատկերներ: Ավելին, պատկերներն ունեն տարբեր սեղմման ալգորիթմներ, և ռաստերային պատկերները շատ տարածված են նրանց մեջ, քանի որ դրանք ավելի քիչ պահեստային տարածք են սպառում: Սակայն, այնուամենայնիվ, ժամանակի ընթացքում մենք ի վերջո ստեղծում ենք կրկնօրինակ լուսանկարներ, ավելորդ պատկերներ և այլն: Մենք ունենք բազմաթիվ հավելվածներ, որոնք առաջարկում են կրկնօրինակ պատկերներ գտնելու հնարավորություններ, ներառյալ կրկնօրինակ նկարների որոնիչը: Եթե դուք ունեք պատկերներ պահված Google-ի լուսանկարներում, կարող եք փորձել օգտագործել google photo duplicate finder-ը, տեղադրել կրկնօրինակ լուսանկարների որոնիչ windows 10 կամ կրկնօրինակ լուսանկարների որոնիչ mac (կախված ձեր օպերացիոն համակարգից): Այնուամենայնիվ, այս հոդվածում մենք պատրաստվում ենք լույս սփռել, թե ինչպես զարգացնել հիանալի կրկնօրինակ լուսանկարների որոնիչ՝ օգտագործելով REST API, որը կարող է օգտագործվել ցանկացած հարթակում:
- Պատկերների մշակման API
- Գտեք կրկնօրինակ պատկերներ Java-ի միջոցով
- Գտեք լուսանկարների կրկնօրինակը, օգտագործելով cURL հրամանները
Պատկերների մշակման API
Պատկերների մշակման համար հասանելի են մի շարք հավելվածներ, որոնք առաջարկում են պատկերային ֆայլեր ստեղծելու, խմբագրելու և շահարկելու հնարավորություններ: Նրանք նաև տրամադրում են հնարավորություններ, ներառյալ պատկերի որոնումը, որը հիմնված է հակադարձ պատկերների որոնման տեխնիկայի կամ որևէ այլ ալգորիթմի վրա: Այնուամենայնիվ, եթե դուք հետաքրքրված եք REST API-ի վրա հիմնված ծրագրային լուծում ունենալով, որը հիմնված է հակադարձ պատկերների որոնման վրա, ապա Aspose.Imaging Cloud-ը որոշակի ընտրություն է: Նրա հզոր որոնողական համակարգն օգնում է ծրագրավորողներին անխափան կերպով ավելացնել պատկերների հետադարձ որոնման գործառույթներ իրենց հավելվածում ցանկացած հարթակում: Դուք նույնիսկ կարող եք սկսել պատկերների համեմատման գործողությունը մի քանի այլ պատկերների մեջ լուսանկարների կրկնօրինակը գտնելու համար: Այս գործողության արդյունքում դուք ստանում եք ամենանման պատկերների ցանկը հետևյալ պայմանների համաձայն.
- Նմանության աստիճանը
- Նմանության նվազագույն շեմը
- Համեմատության ալգորիթմ
Այժմ Java հավելվածում պատկերների մշակման և կրկնօրինակ պատկերների որոնման հնարավորություններ ունենալու համար մենք պետք է օգտագործենք Aspose.Imaging Cloud SDK for Java, քանի որ այն Cloud API-ի շուրջ փաթաթված է: Այսպիսով, հաջորդ քայլը դրա հղումն ավելացնելն է java նախագծում՝ ներառելով հետևյալ տեղեկատվությունը pom.xml maven build տիպի նախագծի մեջ:
<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>
Այժմ, եթե դուք չեք ստեղծել հաշիվ Aspose Cloud Dashboard-ով, կարող եք գրանցվել անվճար փորձարկման համար վավեր էլ. հասցեի միջոցով: Այժմ մուտք գործեք՝ օգտագործելով նորաստեղծ հաշիվը և փնտրեք/ստեղծեք Հաճախորդի ID-ն և Հաճախորդի գաղտնիքը Cloud Dashboard-ում: Այս մանրամասները պահանջվում են նույնականացման նպատակով հետևյալ բաժիններում:
Գտեք կրկնօրինակ պատկերներ Java-ի միջոցով
Հակադարձ պատկերների որոնումը տեխնիկա է, որն օգնում է ձեզ որոնել տեսողականորեն նման պատկերներ՝ հիմնվելով ձեր նմուշի պատկերի վրա: Ստորև բերված են այս հատկանիշի օգտագործման ամենատարածված դեպքերը.
Որոնեք կրկնօրինակ պատկեր և հեռացրեք կրկնօրինակները Որոնեք նմանատիպ պատկերների բովանդակություն Որոնել ոչ պատշաճ բովանդակություն Որոնեք թվային ստորագրված պատկերներ
Մեր API-ն ներկայումս աջակցում է բովանդակության վրա հիմնված պատկերների որոնում, կրկնօրինակ պատկերների որոնում, պատկերների որոնում ըստ հատուկ գրանցված պիտակների, պատկերների համեմատության և նմանության հայտնաբերման և Պատկերի առանձնահատկությունների արդյունահանման գործողություններին: Այժմ այս բաժնում մենք պատրաստվում ենք քննարկել մանրամասները, թե ինչպես գտնել կրկնօրինակ պատկերներ՝ օգտագործելով հակադարձ պատկերի տեխնիկան: Այժմ այս պահանջը կատարելու համար մենք օգտագործում ենք AKAZE ալգորիթմը հատկանիշների հայտնաբերման համար և RandomBinaryTree ալգորիթմը՝ օրինակում հատկանիշի համապատասխանության համար: Կրկնօրինակ պատկերները գտնելու համար մենք կհետևենք հետևյալ քայլերին.
- Վերբեռնեք պատկերներ Cloud Storage-ում
- Ստեղծեք որոնման համատեքստ
- Արտահանել պատկերի առանձնահատկությունները
- Գտեք կրկնօրինակ պատկերներ
Վերբեռնեք պատկերներ Cloud Storage-ում
Խնդրում ենք օգտագործել հետևյալ կոդի հատվածը՝ պատկերային ֆայլերը տեղական սկավառակից ամպային պահեստ վերբեռնելու համար
- Նախ, ստեղծեք ImagingApi-ի օբյեկտ՝ տրամադրելով ClientID և Client
- Երկրորդ, կարդացեք բոլոր պատկերային ֆայլերը նշված գրացուցակից
- Զտեք միայն պատկերային ֆայլերը և ավելացրեք դրանք զտված ցանկում
- Վերբեռնեք պատկերները Cloud պահեստում՝ օգտագործելով uploadFile(…) մեթոդը՝ UploadFileRequest օբյեկտը որպես փաստարկ վերցնելով:
// Ստացեք ClientID-ը և ClientSecret-ը https://dashboard.aspose.cloud/-ից
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// ստեղծել Պատկերային օբյեկտ
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
File directory = new File("/Users/");
//Ստացեք բոլոր ֆայլերը թղթապանակից
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}
//Այստեղ սահմանեք պատկերի պահանջվող ընդարձակումները:
List<String> supportedImageExtensions = Arrays.asList("jpg", "png", "gif", "webp");
int counter =0;
//Զտել միայն պատկերային ֆայլերը
List<File> acceptedImages = new ArrayList<>();
for (File file : allFiles) {
//Վերլուծեք ֆայլի ընդլայնումը
String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
//Ստուգեք, արդյոք ընդլայնումը նշված է supportedImageExtensions-ում
if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
//Ավելացրեք պատկերը զտված ցանկին
acceptedImages.add(file);
// բեռնել առաջին PowerPoint շնորհանդեսը
byte[] bytes = Files.readAllBytes(file.toPath());
// ստեղծել ֆայլի վերբեռնման հարցում
UploadFileRequest request = new UploadFileRequest(acceptedImages.get(counter).getName(),bytes,null);
// վերբեռնեք պատկերի ֆայլը ամպային պահեստում
imageApi.uploadFile(request);
// մեծացնել ֆայլերի հաշվիչը
counter+=1;
}
}
Ստեղծեք որոնման համատեքստ
- Սկզբում մենք պետք է նշենք առանձնահատկությունների հայտնաբերման ալգորիթմը որպես akaze
- Երկրորդ, նշեք ալգորիթմը, որը համընկնում է հատկանիշի հետ որպես պատահականԲինարի ծառ
- Երրորդ, ստեղծեք Image Search Request՝ օգտագործելով CreateImageSearchRequest օբյեկտը
- Այժմ ստեղծեք ստեղծել որոնման համատեքստի կարգավիճակ՝ createImageSearch(…) մեթոդի միջոցով
// նշեք առանձնահատկությունների հայտնաբերման ալգորիթմը
String detector = "akaze";
// նշեք ալգորիթմը հատկանիշի համապատասխանության համար
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
// Ստեղծեք պատկերների որոնման հարցում
CreateImageSearchRequest createSearchContextRequest = new CreateImageSearchRequest(detector,matchingAlgorithm, folder, storage);
// ստեղծել որոնման համատեքստի կարգավիճակ
SearchContextStatus status = imageApi.createImageSearch(createSearchContextRequest);
// ստացեք որոնման համատեքստի կարգավիճակի ID
String searchContextId = status.getId();
Արտահանել պատկերի առանձնահատկությունները
Այժմ ժամանակն է հանել պատկերների առանձնահատկությունները և դրանք ավելացնել որոնման համատեքստում:
// Արտահանեք պատկերների առանձնահատկությունները և դրանք ավելացրեք որոնման համատեքստում
for (File file : allFiles)
{
CreateImageFeaturesRequest request = new CreateImageFeaturesRequest(searchContextId, null, null, "internal", null,null);
imageApi.createImageFeatures(request);
}
Գտեք կրկնօրինակ պատկերներ
- Նշեք նմանության շեմի արժեքը
- Երկրորդ, ստեղծեք կրկնօրինակ պատկերների հավաքածու՝ օգտագործելով ImageDuplicatesSet օբյեկտը
- Այժմ կրկնեք կրկնօրինակ պատկերների ցանկը և գտեք պատկերների նմանությունը՝ օգտագործելով getSimilarity(…) մեթոդը:
// նշեք նմանության շեմի արժեքը
Double similarityThreshold = 90.0;
// ստեղծել կրկնօրինակ պատկերների հավաքածու
ImageDuplicatesSet result = imageApi.findImageDuplicates(
new FindImageDuplicatesRequest(status.getId(), similarityThreshold, folder, storage));
// տպել կրկնօրինակ պատկերների հաշվարկը
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());
}
}
Գտեք լուսանկարների կրկնօրինակը` օգտագործելով cURL հրամանները
Այս բաժնում մենք պատրաստվում ենք օգտագործել cURL հրամանները՝ հրամանի տողի տերմինալի միջոցով REST API-ներ մուտք գործելու համար: Այժմ, որպես նախապայման, մենք պետք է նախ գեներացնենք JWT մուտքի նշան (հիմնված հաճախորդի հավատարմագրերի վրա) հետևյալ հրամանը կատարելիս:
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"
Այս քայլն ակնկալում է, որ բոլոր պատկերները վերբեռնվեն ամպային պահեստում, և այժմ մենք պետք է ստեղծենք որոնման համատեքստի ID՝ CreateImageSearch API-ի զանգի միջոցով: Խնդրում ենք կատարել հետևյալ հրամանը
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>"
Արձագանքման մարմին
{
"id": "0b9ac539-07fb-462a-91cb-8a8d5069ba4d",
"searchStatus": "Idle"
}
Խնդրում ենք գործադրել հետևյալ հրամանը՝ FindImageDuplicates API զանգի միջոցով պատկերի կրկնօրինակները գտնելու համար: Հետևյալ հրամանում օգտագործվում է վերևում ստեղծված որոնման համատեքստի ID-ն:
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>"
Եզրակացություն
Այս հոդվածում մենք իմացանք մանրամասների մասին, թե ինչպես գտնել կրկնօրինակ պատկերներ՝ օգտագործելով Java Cloud SDK: Նմանապես, մենք սովորել ենք, թե ինչպես cURL հրամանները կարող են ծառայել որպես կրկնօրինակ նկարների որոնիչ: Այն դեպքում, երբ դուք պետք է փորձեք այս API-ները դիտարկիչում, խնդրում ենք օգտագործել swagger API Reference: Նմանապես, մենք խորհուրդ ենք տալիս ուսումնասիրել Product documentation՝ իմանալու համար այս API-ի կողմից առաջարկվող այլ հետաքրքիր գործառույթները: Նաև, խնդրում ենք նկատի ունենալ, որ մեր բոլոր Cloud SDK-ները հրապարակված են MIT լիցենզիայի ներքո, այնպես որ կարող եք ներբեռնել ամբողջական աղբյուր կոդը GitHub-ից և փոփոխել այն՝ ըստ ձեր պահանջների: Խնդիրների դեպքում կարող եք դիմել մեզ՝ արագ լուծման համար անվճար ապրանքի աջակցման ֆորումի միջոցով:
Առնչվող հոդվածներ
Խնդրում ենք այցելել հետևյալ հղումները՝ ավելին իմանալու համար.