使用Opencv Python进行FREAK描述

时间:2013-01-29 17:28:06

标签: 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

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

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:3)

现在在OpenCV 3.0中有FREAK的Python绑定。其配置选项描述为here。它似乎缺少如何在Python中实际调用它的文档,但您可以在Python中使用它:

Dim tbList As TextBox() = {txtMath, txtEnglish, txtScience, txtFilipino, txtPE}
            Dim Ave As Double = 0

            For Each item In tbList

                If item.Text = Nothing Then

                    item.Text = "0"

                End If

                Ave += Val(item.Text)

            Next

            Ave = Ave / tbList.Length

            lb_Average.Text = Ave.ToString

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