我一直在使用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()

最佳答案

我认为您不能从SURF / SIFT获得好的结果,因为:

  • SURF / SIFT需要关键点来检测对象,但是在您的情况下,您必须检测标志,并且大多数标志大多是统一的,并且不能提供太多的关键点。
  • 在您的网络摄像头框架中,您有几件事,而不是只有标志。这几件事也有助于获得关键点。

  • 解决方案:我仍然认为您应该使用已经尝试过的opencv的matchTemplate(),但您的版本中存在的问题是您没有考虑matchTemplate()的缩放比例和方向不变的事实。因此,解决方案是使用Gaussian pyramid并创建不同大小的样本标志(一半,四分之一,两倍等)。在获得2-5个不同大小的相同标志后,应在每个标志大小和网络摄像头框架之间执行matchTemplate()

    策略:
  • 接收网络摄像头框架
  • 加载标志的图像。
  • 使用高斯金字塔,创建该标记的越来越大的图像(无需存储它们)。
  • 在网络摄像头框架和每个标志大小之间执行matchTemplate()
  • 结果=您获得的最大相关性值就是网络摄像头中存在的标志。

  • 请记住: matchTemplate的大小和方向不变。因此,如果您旋转图像或在网络摄像头框架中将其放大/缩小,您将不会获得良好的效果。

    09-07 09:33