2017-07-21 2 views
0

Ich verwende SIFT-Feature-Extraktion für OCR.Verwenden der Feature-Extraktion für OCR

import cv2 
import matplotlib.pyplot as plt 
import numpy as np 

img1=cv2.imread('/Users/amuly/Desktop/Soap/training data/d000.jpg') 
img_temp=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY) 

img2=cv2.imread('/Users/amuly/Desktop/Soap/test/dot matrix/5.jpg') 
img_scene=cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY) 

sift=cv2.xfeatures2d.SIFT_create() 
kps1, descs1 = sift.detectAndCompute(img_temp, None) 
kps2, descs2 = sift.detectAndCompute(img_scene, None) 

# create BFMatcher object 
bf = cv2.BFMatcher() 

# Match descriptors. 
matches = bf.knnMatch(descs1,descs2,k=2) 
print matches 

#Apply Ratio test 

good = [] 
for m,n in matches: 
    if m.distance < 0.75*n.distance: 
     good.append([m]) 
print good 

# Draw matches which is giving me an error 

img3 = cv2.drawMatches(img1,kps1,img2,kps2,good,None,flags=2) 

Fehler ist

Erwartete cv :: DMatch für Argument 'passt 1to2'

Ich habe Spiele in good[], die dann in drawMatches() geben wird.

plt.imshow(img3) 
plt.show() 
+0

Ich habe versucht, die Frage besser zu formatieren, aber ich habe keine Ahnung, was "Ich habe etwas in gutem" bedeutet. –

Antwort

0

Verwenden img3 = cv2.drawMatchesKnn (img1, KPS1, img2, KPS2, gut, ohne, flags = 2) statt und es sollte funktionieren.