4

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)

最後の行でセグメンテーション違反が発生しますが、その理由がわかりません。この件に関して少なくとも別の投稿があることに気づきました。つまり、記述子抽出のためにPythonでOpenCVを使用する例はありますか? しかし、それは私の問題を解決していないようです。

どんな助けでも大歓迎です!ありがとう!

4

2 に答える 2

1

OpenCV 2.3.1 を含む Ubuntu 12.04 を使用しています。OpenCV の新しいバージョンが欲しかったので、OpenCV 2.4.5 バックポートを備えた PPA を見つけました。I と を使おうとするcv2.FeatureDetector_create("SURF")cv2.FeatureDetector_create("SIFT")、あなたと同じようにセグメンテーション違反が発生しました。これらの方法は両方とも不自由であることに気付き、OpenCV のインストールにlibopencv-nonfree2.4パッケージが欠落していることに気付きました。それを含む別のPPAに切り替えましたが、これで問題が解決したようです。

于 2014-01-08T21:01:00.827 に答える
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)
于 2013-07-16T12:19:07.643 に答える