[PYTHON] Trouver les erreurs les plus simples avec OpenCV

Une connaissance a dit que j'avais besoin d'un programme pour comparer les différences entre les images, alors je l'ai construit avec Python et OpenCV. Le but est de rechercher les erreurs en utilisant OpenCV, mais ** la condition est qu'il n'y ait pas de divergence entre les images **, donc cela peut ne pas convenir à des fins pratiques. Si vous avez besoin d'une recherche d'erreurs plus robuste, vous pouvez vous référer à cet article. Je pense que la mise en œuvre est environ 10 fois plus légère que la méthode de cet article ...

résultat

L'image suivante est sortie.

image.png (L'image est Wikipedia Plus cité)

Code source

import cv2
import matplotlib.pyplot as plt

img1 = cv2.imread('img1.png')
img1 = cv2.cvtColor(img1,cv2.COLOR_BGR2RGB)
img1 = img1/255
img2 = cv2.imread('img2.png')
img2 = cv2.cvtColor(img2,cv2.COLOR_BGR2RGB)
img2 = img2/255
dif = cv2.absdiff(img1,img2)
dif[dif>0] = 1

fig,axs = plt.subplots(2,2)
ar = axs.ravel()
ar[0].imshow(img1)
ar[1].imshow(img2)
ar[2].imshow(img1*dif*0.8 + img1*0.2)
ar[3].imshow(img2*dif*0.8 + img2*0.2)
plt.show()

Le traitement essentiel n'est que de quelques lignes par OpenCV, mais le prétraitement pour l'affichage avec matplotlib prend pas mal de lignes. Le fait est que vous pouvez obtenir une image de différence avec cv2.absdiff, donc je l'utilise comme masque. Si diff est laissé tel quel, la différence est prise pour chaque canal RVB, elle est donc masquée par l'opération dif [dif> 0] = 1.

Le point qui a pris plus de temps que ce à quoi je m'attendais est que les données d'image d'OpenCV peuvent être prises à la fois en type «int» et en type «float», ce qui est généralement pratique, mais cette fois, le masque n'a pas bien fonctionné. En conséquence, lorsque l'image est lue, elle est «/ 255» et convertie de force en «float».

Recommended Posts

Trouver les erreurs les plus simples avec OpenCV
Essayez de brouiller l'image avec opencv2
Essayez d'utiliser l'appareil photo avec OpenCV de Python
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé de "binariser" l'image avec Python + OpenCV
Le moyen le plus simple d'utiliser OpenCV avec python
Binarisation avec OpenCV / Python
Lire la documentation OpenCV
Ecrire des caractères dans l'illustration de la carte avec OpenCV python
Remplissez l'arrière-plan d'une seule couleur avec OpenCV2 + Python
Faire pivoter les sprites avec OpenCV
Augmentation des données avec openCV
Visualisez le statut d'appréciation des œuvres d'art avec OpenCV
TopView facile avec OpenCV
Trébucher avec opencv3 de homebrew
Créez facilement des miniatures à partir de dossiers vidéo érotiques avec opencv
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
L'histoire de l'affichage d'images avec OpenCV ou PIL (uniquement)
Estimer la posture du marqueur AR avec Python + OpenCV + drone
Trouver une solution au problème N-Queen avec un algorithme génétique (1)
Reconnaissance faciale avec OpenCV de Python
"Traitement Apple" avec OpenCV3 + Python3
Insérez le débogueur avec le nez
L'implémentation la plus simple d'AWS Lambda
Édition d'image avec python OpenCV
Capture de caméra avec Python + OpenCV
Tuez le processus avec sudo kill -9
[Python] Utilisation d'OpenCV avec Python (basique)
Chargement de la vidéo en boucle avec opencv
Détection des bords en temps réel avec OpenCV
Devinez le mot de passe avec klee
gethostbyaddr () communique avec l'extérieur
Détection de visage avec Python + OpenCV
Gratter la moyenne du Nikkei avec le dramaturge-python
Vérifiez le code avec flake8
Calibrer le modèle avec PyCaret
Obtenez des fonctionnalités d'image avec OpenCV
Appelez l'API avec python3.
Reconnaissance faciale / coupe avec OpenCV
Essayez OpenCV avec Google Colaboratory
Création d'un classificateur en cascade avec opencv
Utiliser OpenCV avec Python @Mac
Reconnaissance d'image avec Keras + OpenCV
Détection de visage d'anime avec OpenCV
L'extraction de couleur avec Python + OpenCV a résolu le mystère du fond vert
J'ai essayé de traiter l'image en "style croquis" avec OpenCV
J'ai essayé de traiter l'image dans un "style de dessin au crayon" avec OpenCV
Je veux vérifier la position de mon visage avec OpenCV!
Le moyen le plus rapide d'obtenir régulièrement des images de caméra avec opencv de python