无法在OpenCV v4.20中使用SIFT

问题描述 投票:1回答:2

我正在使用OpenCV v4.20和PyCharm IDE。我想使用SIFT算法。但是我得到这个错误。我在互联网上寻找此错误的解决方案,但没有一个对我有帮助。您知道此错误的解决方案吗? (使用pip可以安装至少3.4.2.16版本的OpenCV)

这是我的错误:

追踪(最近通话):在第7行的文件“ C:/Users/HP/PycharmProjects/features/featuredetect.py”中sift = cv.xfeatures2d_SIFT.create()

cv2.error:OpenCV(4.2.0)C:\ projects \ opencv-python \ opencv_contrib \ modules \ xfeatures2d \ src \ sift.cpp:1210:错误:(-213:未实现功能/功能)该算法已获得专利,并且不包含在此配置中;设置OPENCV_ENABLE_NONFREE CMake选项并在函数'cv :: xfeatures2d :: SIFT :: create'中重建库。

这是我的代码:

import cv2 as cv

image = cv.imread("the_book_thief.jpg")
gray_image = cv.cvtColor(image,cv.COLOR_BGR2GRAY)

sift = cv.xfeatures2d_SIFT.create()
keyPoints = sift.detect(image,None)

output = cv.drawKeypoints(image,keyPoints,None)

cv.imshow("FEATURES DETECTED",output)
cv.imshow("NORMAL",image)

cv.waitKey(0)
cv.destroyAllWindows()
python opencv sift
2个回答
0
投票

您的问题的解决方案应该是安装opencv-python-nonfree(可通过pip获得)。

由于错误,SIFT已获得专利,因此出于许可原因未包含在OpenCV中。它包含在非自由部分中。


0
投票

不幸的是,根据这个Github问题,SIFT no longer available in opencv > 3.4.2。由于您使用的是OpenCV v4.2.0,因此即使您已按pip install opencv-contrib-python所示安装了this post,也不包括在内。解决方法是将其降级到包含SIFT的任何以前的OpenCV版本(我相信3.4.3以下的任何版本)。降级为v3.4.2.16时我已经成功。

pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16

将您的代码与v3.4.2.16一起使用,SIFT似乎有效

© www.soinside.com 2019 - 2024. All rights reserved.