我是图像处理的新手,请帮助使用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进行比较?
答案 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之类的机器学习技术来检测对象。