-1
votes

Détecter et compter le nombre de pixels différents entre deux images avec OpenCV Python

similaire à la question ici Mais j'aimerais retourner un compte du nombre total de pixels différents entre les deux images.

Je suis sûr qu'il est faisable avec OpenCV à Python, mais je ne sais pas où commencer.


4 commentaires

Vous pouvez simplement essayer de prendre la différence entre les images et compter les éléments non nuls. Vous pouvez convertir les images en matrices numpues, puis cela devient trivial.


Bienvenue sur Stackoverflow. Ce site ne sert pas de portail de résolution de problèmes généraux. La communauté vous aidera à obtenir une solution de travail, mais vous devez partager votre code avec des images montrant ce que vous avez déjà fait qui n'a pas fonctionné. Lire "Comment créer un exemple minimal, reproductible" ( Stackoverflow.com/help/minimal-reproductible-example ) , "Quels sont les bons sujets" ( Stackoverflow.com/help/on-topic ) et "Comment puis-je demander un bon Question "( Stackoverflow.com/help/how-to-ask )?


Obtenir un masque binaire de chaque image puis Bitwise-Xor pour obtenir le nombre différent de pixels. Puis comptez le nombre de pixels sur le masque résultant avec cv2.countnonzero


Je suis sûr que cela est faisable avec OpenCV à Python, mais je ne suis pas sûr de partir où commencer. Ce n'est pas ce que la pile dépassement est, désolé.


3 Réponses :


1
votes

Vous pouvez utiliser OpenCVS Absdiff code> pour avoir la différence entre les images, puis comptentNonzero code> pour obtenir le nombre de pixels différents.

img1 = cv2.imread('img1.png')
img2 = cv2.imread('img2.png')

difference = cv2.absdiff(img1, img2)

num_diff = cv2.countNonZero(difference)


0 commentaires

6
votes

supposer que la taille de deux images est la même xxx


0 commentaires

1
votes

Etant donné que les images CV2 ne sont que des matrices de forme (hauteur, largeur, num_color_dimensions) pour les images couleur et (hauteur, largeur) pour les images noires et blanches, ceci est facile à faire avec des opérations numpues ordinaires. Pour les images noires / blanches, nous assumons le nombre de pixels différents: xxx

(Notez que true = 1 et false = 0 , Nous pouvons donc résumer le tableau pour obtenir le numéro de true éléments.)

pour les images couleur, nous voulons trouver tous les pixels où l'une des composantes de la couleur diffère, donc Nous effectuons d'abord un chèque si l'un des composants diffère le long de cet axe (axe = 2, car les composants de forme sont indexés zéro): xxx


0 commentaires