Heim > Java > javaLernprogramm > Wie vergleiche ich zwei Bilder mithilfe der Java OpenCV-Bibliothek?

Wie vergleiche ich zwei Bilder mithilfe der Java OpenCV-Bibliothek?

王林
Freigeben: 2023-08-28 16:25:01
nach vorne
1309 Leute haben es durchsucht

Vergleichen Sie zwei Bilder –

  • Lesen Sie sie mit der Methode Image.IO.read() .

  • Ermitteln Sie die Höhe und Breite beider und stellen Sie sicher, dass sie gleich sind.

  • Ermitteln Sie den Pixelwert und den RGB-Wert der beiden Bilder.

  • Ermitteln Sie die Summe der Unterschiede zwischen den RGB-Werten dieser beiden Bilder.

    li>
  • Berechnen Sie den Prozentsatz der Differenz mit der folgenden Formel:

Average = difference/weight*height*3;
Percentage = (Average/255)*100;
Nach dem Login kopieren

Beispiel

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);
      }
   }
}
Nach dem Login kopieren

Geben Sie 1 ein

如何使用Java OpenCV库比较两个图像?

Ausgabe

Difference: 92.54901960784314
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie vergleiche ich zwei Bilder mithilfe der Java OpenCV-Bibliothek?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage