我正在尝试使用 OpenCV 从图像中提取 SURF 描述符。我正在使用 OpenCV 2.4 和 Python 2.7,但很难找到任何提供有关如何使用这些函数的信息的文档。我已经能够使用以下代码来提取特征,但我找不到任何明智的方法来提取描述符:
import cv2
img = cv2.imread("im1.jpg")
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
surf = cv2.FeatureDetector_create('SURF')
detector = cv2.GridAdaptedFeatureDetector(surf, 50) # max number of features
fs = detector.detect(img2)
我尝试提取描述符的代码是:
import cv2
img = cv2.imread("im3.jpg")
sd = cv2.FeatureDetector_create("SURF")
surf = cv2.DescriptorExtractor_create("SURF")
keypoints = []
fs = surf.compute(img, keypoints) # returns empty result
sd.detect(img) # segmentation faults
有谁有执行此类操作的示例代码,或者指向提供示例的任何文档的指针?
以下是我使用 Python 2.7 和 OpenCV 2.4 编写的用于提取 SURF 特征的一些代码示例。
im2 = cv2.imread(imgPath)
im = cv2.cvtColor(im2, cv2.COLOR_BGR2GRAY)
surfDetector = cv2.FeatureDetector_create("SURF")
surfDescriptorExtractor = cv2.DescriptorExtractor_create("SURF")
keypoints = surfDetector.detect(im)
(keypoints, descriptors) = surfDescriptorExtractor.compute(im,keypoints)
这可以工作并返回一组描述符。
不幸的是,由于 cv2.SURF() 在 2.4 中不起作用,因此您必须经历这个繁琐的过程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)