如何使用Java OpenCV库比较两个图像?
比较两个图像 -
使用 Image.IO.read()读取它们 方法。
获取两者的高度和宽度,确保它们相等。
获取像素值,并获取两个图像的 RGB 值。
获取这两个图像的 RGB 值之间的差异之和。
li>使用以下公式计算差异的百分比 -
Average = difference/weight*height*3; Percentage = (Average/255)*100;
示例
import java.awt.Color; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.io.File; public class ComparingImages { public static void main(String[] args) throws Exception { BufferedImage img1 = ImageIO.read(new File("D:\Images\test1.jpg")); BufferedImage img2 = ImageIO.read(new File("D:\Images\test2.jpg")); int w1 = img1.getWidth(); int w2 = img2.getWidth(); int h1 = img1.getHeight(); int h2 = img2.getHeight(); if ((w1!=w2)||(h1!=h2)) { System.out.println("Both images should have same dimwnsions"); } else { long diff = 0; for (int j = 0; j < h1; j++) { for (int i = 0; i < w1; i++) { //Getting the RGB values of a pixel int pixel1 = img1.getRGB(i, j); Color color1 = new Color(pixel1, true); int r1 = color1.getRed(); int g1 = color1.getGreen(); int b1 = color1.getBlue(); int pixel2 = img2.getRGB(i, j); Color color2 = new Color(pixel2, true); int r2 = color2.getRed(); int g2 = color2.getGreen(); int b2= color2.getBlue(); //sum of differences of RGB values of the two images long data = Math.abs(r1-r2)+Math.abs(g1-g2)+ Math.abs(b1-b2); diff = diff+data; } } double avg = diff/(w1*h1*3); double percentage = (avg/255)*100; System.out.println("Difference: "+percentage); } } }
输入1
输入2
输出
Difference: 92.54901960784314
以上就是如何使用Java OpenCV库比较两个图像?的详细内容,更多请关注其它相关文章!