我试图用Opencv在Python中实现异常描述符。下面是我使用的代码:
def surf_freak_detect(image,hessianThreshold):
surfDetector = cv2.SURF(hessianThreshold)
surfDetector=cv2.GridAdaptedFeatureDetector(surfDetector,50)
keypoints = surfDetector.detect(image,None)
freakExtractor = cv2.DescriptorExtractor_create('FREAK')
keypoints,descriptors= freakExtractor.compute(image,keypoints)
del freakExtractor
return keypoints,descriptors这是初始化Freak描述符的正确方法吗?通过进行一些调试,我发现解释器在计算描述符时花费了很长时间,然后最终崩溃。关键点被正确地检测到。奇怪的是,它有时工作,有时和有时只是崩溃!
发布于 2013-12-17 10:47:11
如果正确检测到关键点,但程序在生成描述符时崩溃,这是因为描述符区域(它围绕着密钥点)从图像中出来,并且内存访问到不存在的位置。
你必须以某种方式限制操作区域的异常描述符。
发布于 2015-11-20 03:55:31
现在,在OpenCV 3.0中有针对There的Python。它的配置选项被描述为这里。它似乎缺少关于如何在Python中实际调用它的文档,但是您可以在Python中使用它,如下所示:
freakExtractor = cv2.xfeatures2d.FREAK_create()
keypoints,descriptors= freakExtractor.compute(image,keypoints)(您必须从一个单独的特征检测器获取关键点,就像您在上面的代码中所做的那样。)
https://stackoverflow.com/questions/14588682
复制相似问题