使用Harris algo功能进行图像识别

时间:2017-07-02 23:44:18

标签: python opencv opencv3.0

我是图像处理的新手,请帮助使用Harrise转角检测算法进行图像识别 我想在我的样本图像中运行Harrris算法,检测它的角落。比在主图像上运行相同的算法,我试图识别样本图像。将主图像中的特征与样本图像中的特征进行比较后 但是我不确定这些特征是否是坐标,如果哈里斯算法返回的特征是坐标而不是我应该比较的是什么? 这是我的代码:

import cv2
import numpy as np

filename_sign = 'E:/Documents/Python/sample.jpg'
filename_photo = 'E:/Documents/Python/main.jpg'

img_sign = cv2.imread(filename_sign)
gray_sign = cv2.cvtColor(img_sign,cv2.COLOR_BGR2GRAY)

gray_sign = np.float32(gray)
dst_sign = cv2.cornerHarris(gray_sign,2,3,0.04)

img_photo = cv2.imread(filename_photo)
gray_photo= cv2.cvtColor(img_sign,cv2.COLOR_BGR2GRAY)

gray_photo= np.float32(gray)
dst_photo= cv2.cornerHarris(gray_photo,2,3,0.04)

我的问题是:
1)我可以使用此方法识别另一个图像上的样本图像 2)如何将dst_sign特征与dst_photo进行比较?

1 个答案:

答案 0 :(得分:0)

Harris角点探测器有更好的替代方案,效率更高,可能会产生更好的效果。由opencv团队开发的ORB特征检测器和描述符是一个很好的选择。

探测器(orb.detect())查找图像中的特征。这些就是你所谓的角落。然后,您将使用orb.compute()为这些关键点计算描述符。这些基本上描述了方向,位置等方面的功能。然后,您可以使用这些描述符来查找图像之间的匹配,例如cv2.BFMatcher()

以下是您可以使用的非常好的教程:

ORB: http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_orb/py_orb.html

功能匹配:http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.html#matcher

编辑:如果您想要执行对象检测,则可以使用template matching等替代方法,或者使用HOG SVM之类的机器学习技术来检测对象。