Python opencv特征检测器导致分割错误



我使用的是Python 2.7和opencv 2.4.2版本。我遇到了分割错误。这是我尝试的代码:

import cv2
img = cv2.imread(img_path)
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
detector = cv2.FeatureDetector_create("SURF") # or "SIFT"
kp  = detector.detect(img2)

最后一行导致分段错误,我不明白为什么。我意识到至少还有另一篇关于这个主题的帖子,即:有人有任何使用OpenCV和python进行描述符提取的例子吗?但这似乎并不能解决我的问题。

任何帮助都将不胜感激!谢谢

我使用的是Ubuntu 12.04,它包括OpenCV 2.3.1。我想要一个新版本的OpenCV,所以我找到了一个带有OpenCV 2.4.5后台端口的PPA。当我尝试使用I cv2.FeatureDetector_create("SURF")cv2.FeatureDetector_create("SIFT")时,我遇到了与您一样的分段错误。我意识到这两种方法都是非自由的,并注意到我的OpenCV安装缺少libopencv-nonfree2.4包。我换了另一个包含它的PPA,这似乎解决了问题。

我很确定cv2.FeatureDetector_create()实际上只在C++接口中。你想做这样的事情:

import numpy as np
import cv2
img = cv2.imread(img_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
surf = cv2.SURF()
mask = np.uint8(np.ones(gray.shape))
surf_points = surf.detect(gray, mask)

最新更新