J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV

Aperçu

Un mémo quand j'ai créé une fonction en Python pour comparer une image avec plusieurs images avec un histogramme en échelle de gris

environnement

--opencv 2.4.8 (installé avec conda)

la mise en oeuvre

image_compare.py



import cv2

def matching(self):

    im = cv2.imread('/to/image/path/image.jpg', cv2.IMREAD_GRAYSCALE) #ImageFile à comparer
    image_hist = cv2.calcHist([im], [0], None, [256], [0, 256])

    target = self.compare_target_hist(image_hist)

    result = []

    while True:
        try:
            result.append(target.next())

        except StopIteration:
            break

    result.sort(reverse=True)

    return result[0][1]

#ImageFile à comparer
def gen_target(self):
    yield "to/image/path/4.jpg "
    yield "to/image/path/3.jpg "
    yield "to/image/path/5.jpg "
    yield "to/image/path/2.jpg "
    yield "to/image/path/1.jpg "

def compare_target_hist(self, image_hist):

    target_files = self.gen_target()

    while True:
        try:
            target_file = target_files.next()
            im = cv2.imread(target_file, cv2.IMREAD_GRAYSCALE)
            target_hist = cv2.calcHist([im], [0], None, [256], [0, 256])
            yield (self.compare_hist(image_hist, target_hist), target_file)

        except StopIteration:
            break

#Comparaison de l'histogramme
def compare_hist(self, hist1, hist2):
    total = 0
    for i in range(len(hist1)):
        total += min(hist1[i], hist2[i])
    return float(total) / sum(hist1)


if __name__ == '__main__':
    matching()

Recommended Posts

J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
J'ai essayé de "lisser" l'image avec Python + OpenCV
Comment recadrer une image avec Python + OpenCV
J'ai essayé de "binariser" l'image avec Python + OpenCV
[OpenCV / Python] J'ai essayé l'analyse d'image de cellules avec OpenCV
J'ai essayé d'implémenter le perceptron artificiel avec python
J'ai essayé de créer une application OCR avec PySimpleGUI
Trouver la similitude d'image avec Python + OpenCV
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
J'ai essayé le rendu non réaliste avec Python + opencv
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de traiter l'image en "style croquis" avec OpenCV
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de traiter l'image dans un "style de dessin au crayon" avec OpenCV
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] Japonais simple ⇒ J'ai essayé de créer un outil de traduction en anglais
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] J'ai essayé de faire une application qui calcule le salaire en fonction des heures de travail avec tkinter
J'ai essayé d'obtenir une image en grattant
J'ai essayé de détecter rapidement un mouvement avec OpenCV
Je veux faire un jeu avec Python
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de sortir LLVM IR avec Python
J'ai essayé de détecter un objet avec M2Det!
J'ai essayé d'automatiser la fabrication des sushis avec python
J'ai essayé d'envoyer un email avec SendGrid + Python
J'ai créé un capteur d'ouverture / fermeture (lien Twitter) avec TWE-Lite-2525A
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
[Zaif] J'ai essayé de faciliter le commerce de devises virtuelles avec Python
J'ai essayé d'entraîner la fonction péché avec chainer
Je veux convertir une image en WebP avec sucette
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
J'ai essayé d'extraire des fonctionnalités avec SIFT d'OpenCV
Édition d'image avec python OpenCV
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
Suite ・ J'ai essayé de créer Slackbot après avoir étudié Python3
J'ai essayé de démarrer avec le script python de blender_Partie 02
Créer une fonction pour décrire les polices japonaises avec OpenCV
J'ai essayé de devenir un Ann Man en utilisant OpenCV
J'ai essayé d'extraire le dessin au trait de l'image avec Deep Learning
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai fait de mon mieux pour créer une fonction d'optimisation, mais cela n'a pas fonctionné.
J'ai essayé de trouver la classe alternative avec tensorflow