cv2.FeatureDetector_create('SIFT')导致分段错误

时间:2016-02-23 21:30:29

标签: python opencv

我正在使用opencv 2.4.11和python 2.7进行计算机视觉项目。 
我正在尝试获取SIFT描述符:




  ima = cv2.imread('image.jpg')
 gray = cv2 .cvtColor(ima,cv2.COLOR_BGR2GRAY)

 detector = cv2.FeatureDetector_create('SIFT')#或'SURF'为此事
 descriptor = cv2.DescriptorExtractor_create('SIFT')&# xA;
 kpts = detector.detect(灰色)
  




当调用最后一条指令时,它会抛出一个丑陋的分段错误。我必须使用2.4.x版本,因此上传到openxv的3.x版本以使用SIFT或SURF方法不是一种选择。我之前使用sudo make uninstall从3.1降级并从0开始安装了实际的opencv版本。





有没有人知道为什么会这样?




3 个答案:

答案 0 :(得分:2)

尝试:

import cv2

ima = cv2.imread('image.jpg')
gray = cv2.cvtColor(ima, cv2.COLOR_BGR2GRAY)

detector = cv2.SIFT()

kp1, des1 = detector.detectAndCompute(gray, None)

detector = cv2.FeatureDetector_create('SIFT')也适用于创建SIFT对象。

答案 1 :(得分:0)

目前我是计算机科学的初学者,所以为我的简短解释道歉。 我有OpenCV 3和Python 2.7.11 在我没有下载之前,你最好先阅读this site 毕竟你可以编写这段代码(它与你的代码差不多)。

import cv2
import numpy as np

img = cv2.imread('lenna.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

sift = cv2.xfeatures2d.SIFT_create()
detector = sift.detect(gray, None)

kpts, des = sift.compute(gray, detector)
# kpts,des=descriptor.compute(gray,kpts)
im_with_keypoints = cv2.drawKeypoints(gray, kpts, np.array([]), color=255, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

cv2.imshow("Keypoints", im_with_keypoints)
cv2.waitKey()

问候!

答案 2 :(得分:-1)

使用

安装opencv_contrib
pip install opencv-contrib-python

然后你的代码就可以了。