Maison > Java > javaDidacticiel > Comment comparer deux images à l'aide de la bibliothèque Java OpenCV ?

Comment comparer deux images à l'aide de la bibliothèque Java OpenCV ?

王林
Libérer: 2023-08-28 16:25:01
avant
1307 Les gens l'ont consulté

Comparez deux images -

  • Lisez-les en utilisant la méthode Image.IO.read() .

  • Obtenez la hauteur et la largeur des deux, assurez-vous qu'elles sont égales.

  • Obtenez la valeur du pixel et obtenez la valeur RVB des deux images.

  • Obtenez la somme des différences entre les valeurs RVB de ces deux images.

    li>
  • Calculez le pourcentage de différence en utilisant la formule suivante -

Average = difference/weight*height*3;
Percentage = (Average/255)*100;
Copier après la connexion

Exemple

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);
      }
   }
}
Copier après la connexion

Entrez 1

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

Entrez 2

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

Sortie

Difference: 92.54901960784314
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal