欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)圖片比對(duì)算法

 更新時(shí)間:2022年04月21日 15:27:43   作者:天生要強(qiáng)注定要涼  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖片比對(duì)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

采用直方圖原理算法比對(duì)圖片的細(xì)微差別效果比較好,以下兩張區(qū)別很小的圖片識(shí)別效果如下:

識(shí)別結(jié)果:

主要代碼如下:

import javax.imageio.*;
import java.awt.image.*;
import java.awt.*;
import java.io.*;
?
public class PhotoDigest {
? ? public static void main(String[] args) throws Exception {
? ? ? ? float percent = compare(getData("/Users/sun/Downloads/1.jpg"),
? ? ? ? ? ? ? ? getData("/Users/sun/Downloads/3.jpg"));
? ? ? ? if (percent == 0) {
? ? ? ? ? ? System.out.println("無(wú)法比較");
? ? ? ? } else {
? ? ? ? ? ? System.out.println("兩張圖片的相似度為:" + percent + "%");
? ? ? ? }
? ? }
?
? ? public static int[] getData(String name) {
? ? ? ? try {
? ? ? ? ? ? BufferedImage img = ImageIO.read(new File(name));
? ? ? ? ? ? BufferedImage slt = new BufferedImage(100, 100,
? ? ? ? ? ? ? ? ? ? BufferedImage.TYPE_INT_RGB);
? ? ? ? ? ? slt.getGraphics().drawImage(img, 0, 0, 100, 100, null);
? ? ? ? ? ? // ImageIO.write(slt,"jpeg",new File("slt.jpg"));
? ? ? ? ? ? int[] data = new int[256];
? ? ? ? ? ? for (int x = 0; x < slt.getWidth(); x++) {
? ? ? ? ? ? ? ? for (int y = 0; y < slt.getHeight(); y++) {
? ? ? ? ? ? ? ? ? ? int rgb = slt.getRGB(x, y);
? ? ? ? ? ? ? ? ? ? Color myColor = new Color(rgb);
? ? ? ? ? ? ? ? ? ? int r = myColor.getRed();
? ? ? ? ? ? ? ? ? ? int g = myColor.getGreen();
? ? ? ? ? ? ? ? ? ? int b = myColor.getBlue();
? ? ? ? ? ? ? ? ? ? data[(r + g + b) / 3]++;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? // data 就是所謂圖形學(xué)當(dāng)中的直方圖的概念
? ? ? ? ? ? return data;
? ? ? ? } catch (Exception exception) {
? ? ? ? ? ? System.out.println("有文件沒(méi)有找到,請(qǐng)檢查文件是否存在或路徑是否正確");
? ? ? ? ? ? return null;
? ? ? ? }
? ? }
?
? ? public static float compare(int[] s, int[] t) {
? ? ? ? try {
? ? ? ? ? ? float result = 0F;
? ? ? ? ? ? for (int i = 0; i < 256; i++) {
? ? ? ? ? ? ? ? int abs = Math.abs(s[i] - t[i]);
? ? ? ? ? ? ? ? int max = Math.max(s[i], t[i]);
? ? ? ? ? ? ? ? result += (1 - ((float) abs / (max == 0 ? 1 : max)));
? ? ? ? ? ? }
? ? ? ? ? ? return (result / 256) * 100;
? ? ? ? } catch (Exception exception) {
? ? ? ? ? ? return 0;
? ? ? ? }
? ? }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)雪花算法的原理

    Java實(shí)現(xiàn)雪花算法的原理

    這篇文章主要介紹了Java實(shí)現(xiàn)雪花算法的原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • MyBatis多表連接查詢的實(shí)例教程

    MyBatis多表連接查詢的實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于MyBatis多表連接查詢的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • SpringBoot配置和切換Tomcat流程詳解

    SpringBoot配置和切換Tomcat流程詳解

    這篇文章主要介紹了如何給springboot配置和切換默認(rèn)的Tomcat容器以及相關(guān)的經(jīng)驗(yàn)技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Spring開發(fā)核心之AOP的實(shí)現(xiàn)與切入點(diǎn)持久化

    Spring開發(fā)核心之AOP的實(shí)現(xiàn)與切入點(diǎn)持久化

    面向?qū)ο缶幊淌且环N編程方式,此編程方式的落地需要使用“類”和 “對(duì)象”來(lái)實(shí)現(xiàn),所以,面向?qū)ο缶幊唐鋵?shí)就是對(duì) “類”和“對(duì)象” 的使用,面向切面編程,簡(jiǎn)單的說(shuō),就是動(dòng)態(tài)地將代碼切入到類的指定方法、指定位置上的編程思想就是面向切面的編程
    2022-10-10
  • java設(shè)計(jì)模式之策略模式在促銷活動(dòng)場(chǎng)景中的使用案例

    java設(shè)計(jì)模式之策略模式在促銷活動(dòng)場(chǎng)景中的使用案例

    這篇文章主要為大家介紹了java設(shè)計(jì)模式之策略模式在促銷活動(dòng)場(chǎng)景中案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Java項(xiàng)目實(shí)現(xiàn)五子棋小游戲

    Java項(xiàng)目實(shí)現(xiàn)五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了Java項(xiàng)目實(shí)現(xiàn)五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java中關(guān)于優(yōu)先隊(duì)列PriorityQueue的使用及相關(guān)方法

    Java中關(guān)于優(yōu)先隊(duì)列PriorityQueue的使用及相關(guān)方法

    這篇文章主要介紹了Java中關(guān)于優(yōu)先隊(duì)列PriorityQueue的使用及相關(guān)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java項(xiàng)目防止SQL注入的幾種方法總結(jié)

    Java項(xiàng)目防止SQL注入的幾種方法總結(jié)

    SQL注入是比較常見(jiàn)的網(wǎng)絡(luò)攻擊方式之一,在客戶端在向服務(wù)器發(fā)送請(qǐng)求的時(shí)候,sql命令通過(guò)表單提交或者url字符串拼接傳遞到后臺(tái)持久層,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java項(xiàng)目防止SQL注入的幾種方法,需要的朋友可以參考下
    2023-04-04
  • 深入淺析Java 抽象類和接口

    深入淺析Java 抽象類和接口

    這篇文章主要介紹了Java 抽象類和接口的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • Java中基于DeferredResult的異步服務(wù)詳解

    Java中基于DeferredResult的異步服務(wù)詳解

    這篇文章主要介紹了Java中基于DeferredResult的異步服務(wù)詳解,DeferredResult字面意思是"延遲結(jié)果",它允許Spring MVC收到請(qǐng)求后,立即釋放(歸還)容器線程,以便容器可以接收更多的外部請(qǐng)求,提升吞吐量,需要的朋友可以參考下
    2023-12-12

最新評(píng)論