我使用的是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)