Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để so sánh hai hình ảnh bằng cách sử dụng thư viện Java OpenCV?

Để so sánh hai hình ảnh -

  • Đọc cả hai bằng cách sử dụng Image.IO.read () phương pháp.

  • Lấy chiều cao và chiều rộng của cả hai để đảm bảo chúng bằng nhau.

  • Nhận các giá trị pixel và nhận các giá trị RGB của cả hai hình ảnh.

  • Nhận tổng sự khác biệt giữa các giá trị RGB của hai hình ảnh này.

  • Tính phần trăm chênh lệch theo công thức sau -

Average = difference/weight*height*3;
Percentage = (Average/255)*100;

Ví dụ

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);
      }
   }
}

Đầu vào1

Làm thế nào để so sánh hai hình ảnh bằng cách sử dụng thư viện Java OpenCV?

Đầu vào2

Làm thế nào để so sánh hai hình ảnh bằng cách sử dụng thư viện Java OpenCV?

Đầu ra

Difference: 92.54901960784314