我正在使用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)
最后一行导致分段错误,我不明白为什么。我知道至少还有另一篇关于这个主题的帖子,即:Does anyone have any examples of using OpenCV with python for descriptor extraction? 但它似乎没有解决我的问题。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
我正在使用Ubuntu 12.04,其中包括OpenCV 2.3.1。我想要一个更新版本的OpenCV,所以我找到了一个带有OpenCV 2.4.5反向端口的PPA。当我尝试使用cv2.FeatureDetector_create("SURF")
和cv2.FeatureDetector_create("SIFT")
时,我就像您一样遇到了分段错误。我意识到这两种方法都是非自由的,并且发现我的OpenCV安装缺少libopencv-nonfree2.4
包。我切换到包含它的另一个PPA,这似乎解决了这个问题。
答案 1 :(得分:0)
我非常确定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)