Java 照片對(duì)比功能的實(shí)現(xiàn)
package com.function;
import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
import javax.imageio.ImageIO;
/*
* 這個(gè)是一個(gè)照片比對(duì)功能實(shí)現(xiàn)類
*/
public class Tools_PhotoMatching {
public int mactching(String contrast_photo ,String test_photo) {
int contras_rgb[] = new int[3];
int test_rgb[] = new int[3];
int k = 0;
File contrastfile = new File(contrast_photo); //對(duì)比照片路徑
File testfile = new File(test_photo); //測(cè)試照片路徑
BufferedImage contrasphoto = null;
BufferedImage testphoto = null;
try {
contrasphoto = ImageIO.read(contrastfile);
testphoto = ImageIO.read(testfile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int contraswidth = contrasphoto.getWidth();
int contrasheight = contrasphoto.getHeight();
int testwidth = testphoto.getWidth();
int testheight = testphoto.getHeight();
//File file = new File("C:\\Users\\prize\\Desktop\\TOOLS\\DCIM\\Camera\\log.txt");
//File file1 = new File("C:\\Users\\prize\\Desktop\\TOOLS\\DCIM\\Camera\\log1.txt");
try {
//FileWriter fileWriter = new FileWriter(file);
//FileWriter fileWriter1 = new FileWriter(file1);
//BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
//BufferedWriter bufferedWriter2 = new BufferedWriter(fileWriter1);
for (int i = 0; i < testwidth; i++) {
for (int j = 0; j < testheight; j++) {
//StringBuffer astringBuffer1 = new StringBuffer();
//StringBuffer bstringBuffer1 = new StringBuffer();
int pixel1 = contrasphoto.getRGB(i, j);
int pixle2= testphoto.getRGB(i, j);
contras_rgb[0] = (pixel1 & 0xff0000) >> 16; //將值轉(zhuǎn)化成16進(jìn)制
contras_rgb[1] = (pixel1 & 0xff00) >> 8;
contras_rgb[2] = (pixel1 & 0xff);
//astringBuffer1.append(i+"行"+j+"列 R="+contras_rgb[0]+"G="+contras_rgb[1]+"B="+contras_rgb[2] );
//bufferedWriter.write(astringBuffer1.toString());
//bufferedWriter.newLine();
test_rgb[0] = (pixle2 & 0xff0000) >> 16;
test_rgb[1] = (pixle2 & 0xff00) >> 8;
test_rgb[2] = (pixle2 & 0xff);
//bstringBuffer1.append(i+"行"+j+"列 R="+test_rgb[0]+"G="+test_rgb[1]+"B="+test_rgb[2]);
//bufferedWriter2.write(bstringBuffer1.toString());
//bufferedWriter2.newLine();
int Difference_R = Math.abs(contras_rgb[0]-test_rgb[0]); //相減并且求絕對(duì)值
int Difference_G= Math.abs(contras_rgb[1]-test_rgb[1]);
int Difference_B= Math.abs(contras_rgb[2]-test_rgb[2]);
//System.out.println("第"+j+"次:"+Math.abs(Difference));
final int R = 35; //35
final int L = 130;
int Q = Difference_R+Difference_G+Difference_B;
if (Difference_R > R && Difference_G > R && Q>L) { //判斷每個(gè)值的浮動(dòng)不超過(guò)35
k++;
}else if (Difference_G >R && Difference_B>R && Q>L) {
k++;
}else if (Difference_R > R && Difference_B>R && Q>L) {
k++;
}
}
}
//bufferedWriter.close();
//bufferedWriter2.close();
//fileWriter.close();
//fileWriter1.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return k;
}
}
以上就是Java 照片對(duì)比功能實(shí)現(xiàn)類的詳細(xì)內(nèi)容,更多關(guān)于Java 照片對(duì)比的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- java圖片對(duì)比度調(diào)整示例代碼
- Java實(shí)現(xiàn)圖片對(duì)比功能
- java根據(jù)不同的參數(shù)調(diào)用不同的實(shí)現(xiàn)類操作
- Java Map接口及其實(shí)現(xiàn)類原理解析
- Java獲取接口所有實(shí)現(xiàn)類的方式詳解
- java中List集合及其實(shí)現(xiàn)類的方法詳解
- Java動(dòng)態(tài)獲取實(shí)現(xiàn)某個(gè)接口下所有的實(shí)現(xiàn)類對(duì)象集合
- thinkPHP框架實(shí)現(xiàn)類似java過(guò)濾器的簡(jiǎn)單方法示例
- java 集合之實(shí)現(xiàn)類ArrayList和LinkedList的方法
- 詳解Kotlin中如何實(shí)現(xiàn)類似Java或C#中的靜態(tài)方法
相關(guān)文章
零基礎(chǔ)寫Java知乎爬蟲(chóng)之獲取知乎編輯推薦內(nèi)容
上篇文章我們拿百度首頁(yè)做了個(gè)小測(cè)試,今天我們來(lái)個(gè)復(fù)雜的,直接抓取知乎編輯推薦的內(nèi)容,小伙伴們可算松了口氣,終于進(jìn)入正題了,哈哈。2014-11-11
spring boot上傳文件出錯(cuò)問(wèn)題如何解決
這篇文章主要介紹了spring boot上傳文件出錯(cuò)問(wèn)題如何解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
spring-boot react如何一步一步實(shí)現(xiàn)增刪改查
這篇文章主要介紹了spring-boot react如何一步一步實(shí)現(xiàn)增刪改查,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
Spring中的ImportBeanDefinitionRegistrar接口詳解
這篇文章主要介紹了Spring中的ImportBeanDefinitionRegistrar接口詳解,ImportBeanDefinitionRegistrar接口是也是spring的擴(kuò)展點(diǎn)之一,它可以支持我們自己寫的代碼封裝成BeanDefinition對(duì)象,注冊(cè)到Spring容器中,功能類似于注解@Service @Component,需要的朋友可以參考下2023-09-09
IDEA2020.3.2版本自動(dòng)注釋類和方法注釋模板配置步驟詳解
這篇文章主要介紹了IDEA2020.3.2版本自動(dòng)注釋類和方法注釋模板配置步驟,本文給大家分享了我自己創(chuàng)建過(guò)程通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
spring動(dòng)態(tài)注冊(cè)bean?AOP失效原理解析
這篇文章主要為大家介紹了spring動(dòng)態(tài)注冊(cè)bean使AOP失效原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Mybatis中關(guān)于自定義mapper.xml時(shí),參數(shù)傳遞的方式及寫法
這篇文章主要介紹了Mybatis中關(guān)于自定義mapper.xml時(shí),參數(shù)傳遞的方式及寫法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

