[PYTHON] J'ai créé un programme qui résout la recherche d'erreur en quelques secondes

Calendrier de l'Avent Fujitsu Systems Web Technology 2019 Publié le 16e jour. Le contenu de l'article est l'opinion personnelle, et le contenu de l'écriture est la responsabilité de l'auteur. Peu importe à quelle organisation vous appartenez.

introduction

Cette fois, le 16e jour, je suis familier avec le fait que je n'ai jamais effacé la recherche d'erreur de Saiseria par moi-même.

** Un programme qui peut faire la différence entre deux images et afficher la différence d'une manière facile à comprendre **

Je voudrais écrire sur la façon de faire

Diagramme d'image approximative

スクリーンショット 2019-12-13 21.04.06.png スクリーンショット 2019-12-13 21.04.16.png

Environnement de montage

Préparation préalable

(Il n'y a aucune garantie, mais si vous pouvez utiliser python et diverses bibliothèques, cela fonctionnera normalement, alors jetez un coup d'œil.)

(La méthode d'installation détaillée est '[installation de jupyter anaconda navigator](https://www.google.com/search?q=anaconda+navigator+jupyter+%E3%82%A4%E3%83%B3%E3%82%B9 % E3% 83% 88% E3% 83% BC% E3% 83% AB) 'Je pense que diverses choses vont sortir.)

Commentaire de la source

Maintenant, voici le contenu réel de la source.

Il y a trois parties principales

Et la souris

importation ou paramètre de variable


import cv2, matplotlib
import numpy as np
from IPython.display import Image, display_png

#Image originale 1
img_01 = "sample1.png "
#Image originale 2
img_02 = "sample2.png "
#Veuillez saisir le nom que vous souhaitez donner à l'image de sortie
outImg = "output.png "

Créer une image de masque de la différence


#Lire l'image originale 1 en couleur
img_src01 = cv2.imread(img_01, 1)
 
#Lire l'image originale 2 en couleur
img_src02 = cv2.imread(img_02, 1)
 
#Distribution normale mixte(Gaussian Mixture)Cela semble être un algorithme de division de zone de premier plan / arrière-plan basé sur.
bg = cv2.bgsegm.createBackgroundSubtractorMOG()
 
#Générer une image de masque
mask = bg.apply(img_src01)
mask = bg.apply(img_src02)

#Image du masque de sortie
cv2.imwrite("output/machigai_mask.png ", mask)

print("Image originale 1")
display_png(Image(img_01))
print("Image originale 2")
display_png(Image(img_02))
print("Image de masque")
display_png(Image("output/machigai_mask.png "))

Le résultat de sortie ici est le suivant. スクリーンショット 2019-12-13 22.21.20.png

Mettez de la couleur sur la partie masque de l'image du masque


mask_img = cv2.imread("output/machigai_mask.png ", 1)

#Remplacez la partie blanche de l'image par du rouge
red = [240, 20, 20]
white = [255, 255, 255]
mask_img[np.where((mask_img == white).all(axis=2))] = red

# BGR to RGB
mask_img = cv2.cvtColor(mask_img, cv2.COLOR_BGR2RGB)

#Enregistrez le résultat.
cv2.imwrite("output/color_mask_img.png ", mask_img)

color_mask_img = cv2.imread("output/color_mask_img.png ", 1)
display_png(Image("output/color_mask_img.png "))

Le résultat de sortie ici est le suivant. スクリーンショット 2019-12-14 0.05.36.png

Changer la transparence de l'image du masque et combiner

Enfin, si vous pouvez le faire, ce sera terminé.


# src1 =Image originale 1, src2=Image de masque, alpha(beta) =Il semble bon de régler à un rapport d'environ 1 au total, gamma=Ça faisait du bien quand c'était 0
diff_image = cv2.addWeighted(src1=img_src01,alpha=0.3,src2=color_mask_img,beta=0.7,gamma=0)
cv2.imwrite(outImg, diff_image)

display_png(Image(outImg))

Oui c'est fait スクリーンショット 2019-12-14 0.11.25.png

Je l'ai essayé avec une image qui ressemble à une erreur

Pour cette raison, j'ai cherché des erreurs et je les ai faites. Tout d'abord, essayez-le vous-même (il y a 6 erreurs)

machigai_1_2.png

Avez-vous trouvé l'erreur?

Ensuite, jetons un coup d'œil aux résultats de la ~~ machine à casser les œufs entièrement automatique ~~ résolus par le chercheur d'erreurs.

c'est ici diff_image (1).png

Comment c'est? C'est un excellent taux de réponse correcte.

Cependant, la précision de détection de ** que la perruque de l'enseignant a été changée en pastèque ** n'est pas très bonne.

À propos de la méthode de différence de fond

En premier lieu, cette méthode de différence de fond est Il s'agit d'une méthode pour détecter des objets en mouvement sur une image en mouvement.

en bref

Avec une caméra à point fixe ** Ah, les gens sont passés par là ** C'est une façon de juger quelque chose comme

Il existe deux problèmes majeurs lors de l'utilisation de cette méthode de différence de fond pour trouver des erreurs.

Donc, si vous essayez de créer quelque chose qui puisse être utilisé à des fins générales,

J'ai l'impression de devoir créer un tel logiciel ()

finalement

Faisons de notre mieux pour créer un tel logiciel la prochaine fois (yeux blancs)

référence

Recommended Posts

J'ai créé un programme qui résout la recherche d'erreur en quelques secondes
J'ai essayé de faire un programme pour résoudre (indice) la recherche d'erreur de Saiseriya
J'ai fait un programme qui calcule automatiquement le zodiaque avec tkinter
J'ai créé un programme cryptographique César en Python.
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai essayé "un programme qui supprime les déclarations en double en Python"
J'ai écrit un script qui divise l'image en deux
J'ai créé un programme de sortie de table de nombres premiers dans différentes langues
J'ai fait un bot mou qui m'informe de la température
J'ai fait une commande pour afficher un calendrier coloré dans le terminal
J'ai créé un programme en Python qui change les données de 1 minute de FX en une heure arbitraire (1 heure, etc.)
[Python] Un programme qui arrondit le score
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber
J'ai créé une application Web en Python qui convertit Markdown en HTML
J'ai créé un bot Discord en Python qui se traduit quand il réagit
J'ai fait une simple minuterie qui peut être démarrée depuis le terminal
J'ai créé un konoha de bibliothèque qui fait passer le tokenizer à une belle sensation
[IOS] J'ai créé un widget qui affiche la tendance de Qiita dans Pythonista3. [Python]
J'ai fait une erreur en récupérant la hiérarchie avec MultiIndex of pandas
Un mémo que j'ai écrit un tri rapide en Python
Un programme qui supprime les instructions en double en Python
Programme pour rechercher la même image
Un programme shell qui affiche une séquence de Fibonacci
J'ai créé un LINE BOT qui renvoie une image de riz terroriste en utilisant l'API Flickr
[Débutant] Que se passe-t-il si j'écris un programme qui s'exécute sur php en Python?
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
J'ai écrit un module PyPI qui étend le style de paramètre dans le module sqlite3 de Python
[Python] Un programme qui calcule la différence entre les valeurs totales diagonales
En Python, j'ai créé un LINE Bot qui envoie des informations sur le pollen à partir des informations de localisation.
J'ai créé un programme pour rechercher des mots sur la fenêtre (développement précédent)
J'ai créé un programme en Python qui lit les données FX CSV et crée un grand nombre d'images de graphiques
J'ai créé une application Twitter qui décrypte les caractères de pré-connexion avec heroku (échec)
[Python] Un programme qui compte le nombre de vallées
〇✕ J'ai fait un jeu
[Python] Un programme qui trouve le nombre d'étapes le plus court dans un jeu qui traverse les nuages
J'ai créé une VM qui exécute OpenCV pour Python
J'ai fait un script pour mettre un extrait dans README.md
Programme Shell qui devient aho par multiples de 3
J'ai fait une démo qui permet au modèle formé dans le didacticiel mnist de Tensorflow de distinguer les nombres manuscrits écrits sur la toile.
Un mémo que j'ai touché au magasin de données avec python
J'ai fait une commande pour marquer le clip de la table
[Python / C] J'ai créé un appareil qui fait défiler sans fil l'écran d'un PC à distance.
[Python] Un programme qui compare les positions des kangourous.
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber (édition Google Calendar)
J'ai créé une classe pour obtenir le résultat de l'analyse par MeCab dans ndarray avec python
Un programme qui redimensionne automatiquement la taille d'image requise pour les icônes d'application iOS en Python
[Atcoder] [C ++] J'ai fait un outil d'automatisation de test qui peut être utilisé pendant le concours
Une histoire qui a trébuché lorsque j'ai créé un bot de chat avec Transformer
Programme Python du "Livre qui enseigne facilement la programmation difficile"
J'ai fait un jeu de frappe simple avec tkinter de Python
Un programme polyvalent qui formate les chaînes de commande Linux avec python
J'ai essayé l'algorithme de super résolution "PULSE" dans un environnement Windows
Mémo que je suis resté coincé dans l'introduction de Mezzanine