使用Opencv Python进行FREAK描述

Col*_*ino 12 python opencv feature-detection freak

我试图使用Opencv在Python中实现FREAK描述符.这是我正在使用的代码:

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
Run Code Online (Sandbox Code Playgroud)

这是初始化怪胎描述符的正确方法吗?通过一些调试,我发现解释器需要花费很长时间来计算描述符然后最终崩溃.正确检测关键点.奇怪的是,它有时有效,有时只是崩溃!

Jav*_*ock 10

如果正确检测到关键点但是程序在生成描述符时崩溃,那是因为描述符区域(围绕关键点)来自图像并且存在对不存在的位置存储器访问.

你必须以某种方式限制freak描述符的操作区域.


Luk*_*uke 5

现在,OpenCV 3.0中有FREAK的Python绑定。其配置选项在此处介绍。似乎缺少有关如何在Python中实际调用它的文档,但是您可以像这样在Python中使用它:

freakExtractor = cv2.xfeatures2d.FREAK_create()
keypoints,descriptors= freakExtractor.compute(image,keypoints)
Run Code Online (Sandbox Code Playgroud)

(您必须像上面的代码中那样,通过单独的功能检测器获取关键点。)