【发布时间】:2014-03-18 13:13:33
【问题描述】:
我一直致力于使用 opencv python 识别相机中显示的标志的项目。 我已经尝试过使用冲浪、颜色直方图匹配和模板匹配。但是在这 3 个中,它并不总是返回正确的答案。我现在想要的是什么是我这个问题的最佳解决方案。 模板图片示例:
这是相机中显示的标志示例。
如果这是我想要识别的图像类型,应该使用什么?
更新 matchTemplate 中的代码
flags=["Cambodia.jpg","Laos.jpg","Malaysia.jpg","Myanmar.jpg","Philippines.jpg","Singapore.jpg","Thailand.jpg","Vietnam.jpg","Indonesia.jpg","Brunei.jpg"]
while True:
methods = 'cv2.TM_CCOEFF_NORMED'
list_of_pics=[]
for flag in flags:
template= cv2.imread(flag,0)
img = cv2.imread('philippines2.jpg',0)
# generate Gaussian pyramid for A
G = template.copy()
gpA = [G]
for i in xrange(6):
G = cv2.pyrDown(G)
gpA.append(G)
n=0
for x in gpA:
w, h = x.shape[::-1]
method = eval(methods)#
# Apply template Match
res = cv2.matchTemplate(img,x,method)
matchVal=res[0][0]
picDict={"matchVal":matchVal,"name":flag}
list_of_pics.append(picDict)
n=n+1
newlist = sorted(list_of_pics, key=operator.itemgetter('matchVal'),reverse=True)
#print newlist
matched_image=newlist[0]['name']
print matched_image
k=cv2.waitKey(10)
if (k==27):
break
cv2.destroyAllWindows()
【问题讨论】:
标签: python opencv python-2.7 image-processing