Je suis actuellement entrain de me lancer dans un petit projet Python - OpenCV permettant à partir de la reconnaissance de logo sur une facture de pouvoir envoyer celle-ci dans un dossier ayant son propre nom. Ainsi, nous avons admettons les factures suivantes dans le dossier factures : facture A, facture B, facture C
Nous avons les logos suivants dans le dossier logos : logo A, logo B, logo C
Et notre petit script est capable pour chaque logo de regarder dans le dossier facture les factures ayant le même logo que celui de référence et d'envoyer la facture dans un nouveau dossier réservé à toutes les factures d'une même société.
==> Or le problème actuel c'est que je n'arrive pas à mettre en place la condition permettant de vérifier si le logo "match" ou non avec chaque facture.
Voici mon script :
#-*- coding: utf-8 -*-
import os, shutil
import numpy as np
import cv2
#########################
# SIFT descriptors part #
#########################
# 1 invoice in invoice directory
img2 = cv2.imread('/Users/valentinjungbluth/Desktop/SIFT_SURF_Algo/Factures/facture_CSA.jpg',0)
print img2.dtype
# Loop over all logo in logo directory
for element in os.listdir('/Users/valentinjungbluth/Desktop/SIFT_SURF_Algo/Logos') :
img = cv2.imread('/Users/valentinjungbluth/Desktop/SIFT_SURF_Algo/Logos/'+ element,0)
print img.dtype
# Initiate SIFT detector
sift = cv2.xfeatures2d.SIFT_create()
kp1, des1 = sift.detectAndCompute(img,None)
kp2, des2 = sift.detectAndCompute(img2,None)
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2,k=2)
good = []
for m,n in matches :
if m.distance < 0.5*n.distance :
good.append([m])
img3 = cv2.drawMatchesKnn(img,kp1,img2,kp2,good,None,flags=2)
# Condition which create directory and copy file only if matches between logo and invoice
cv2.imwrite(element,img3)
try :
os.mkdir("/Users/valentinjungbluth/Desktop/Datasystems_facture")
shutil.copy("/Users/valentinjungbluth/Desktop/SIFT_SURF_Algo/Factures/facture_CSA.jpg" ,"/Users/valentinjungbluth/Desktop/Datasystems_facture")
except OSError :
pass
print ("Déplacement de la facture dans le dossier de son entreprise")
Voici un exemple de match et no-match :
Et no-match :
Auriez-vous une idée sur quelle façon procéder ?
Cordialement,
EDIT : J'ai trouvé la solution permettant de redistribuer dans les dossiers adéquats et cela semble fonctionner sans problèmes !
- Edité par Andromedae93 15 décembre 2016 à 18:22:29
Rien ne se crée, rien ne se perd, tout se transforme ...
[OpenCV] Problème nombre de points clés
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.