web-dev-qa-db-ja.com

sift = cv2.xfeatures2d.SIFT_create()は、contribがインストールされていても機能しない

だから私は使用しようとしています:

sift = cv2.xfeatures2d.SIFT_create()

そして、このエラーが出ています:

cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: error: (-213:The function/feature is not implemented) 
This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake 
option and rebuild the library in function 'cv::xfeatures2d::SIFT::create'

Python 3.5.0opencv(3.4.3)を使用していますが、アイドルを使用しています。これは、TensorFlowをインストールしようとした後、opencv-contrib-pythonをインストールしてみましたが、同じエラーが引き続き発生しています。事前に感謝し、十分な情報が含まれていない場合は謝罪します

23
rhonda.rooster

同じ問題がありました。他のopencv-pythonおよびopencv-contrib-pythonバージョンを変更し、この問題を解決します。ここにopencv-pythonの履歴バージョンがあります。

https://pypi.org/project/opencv-python/#history 、次のコードを使用します:

pip install opencv-python == 3.4.2.16

pip install opencv-contrib-python == 3.4.2.16

編集

Anacondaユーザーの場合、pipではなくこれだけ

conda install -c menpo opencv

これにより、cv2 3.4.1とSIFTの実行に必要なすべてがインストールされます。

がんばって〜

67
J.Zhao

Opencvバージョンとopencv-contribバージョンの不一致が原因である可能性があります。 CMakeを使用してソースからopencvをインストールし、ソースバージョンがopencv-contrib-pythonのバージョンと異なる場合、現在のopencv-contrib-pythonをアンインストールし、pip install opencv-contrib-python==<version of the source>.Xまたは別の互換バージョンを実行します。私が実行しているバージョンセットアップの1つは、opencv source(3.2)、opencv-python(3.4.0.14)、opencv-contrib-python(3.4.2.17)です。

2
ben