python - 不能在 Python OpenCV v4.20 中使用 SIFT
问题描述
我正在使用 OpenCV v4.20 和 PyCharm IDE。我想使用 SIFT 算法。但我得到这个错误。我在互联网上寻找此错误的解决方案,但没有一个对我有帮助。你知道这个错误的解决方法吗?(使用 pip 我可以安装至少 3.4.2.16 版本的 OpenCV)
这是我的错误:
Traceback(最近一次调用最后):文件“C:/Users/HP/PycharmProjects/features/featuredetect.py”,第 7 行,在 sift = cv.xfeatures2d_SIFT.create()
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1210: error: (-213: The function/feature is not implemented) 这个算法是已获得专利且不包含在此配置中;设置 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()
解决方案
SIFT 的专利已于去年 7 月到期。在版本 > 4.4 中,检测器初始化命令已更改为cv2.SIFT_create()
. 如果你不使用 opencv 的 GUI,建议安装 headless 版本:pip install opencv-python-headless
推荐阅读
- arraylist - 如何在kotlin中获取ArrayList最后一项之前的项目?
- php - 带有 NULL 的 PHP 表单输入数组
- git - Git 分支创建问题:“致命:无法锁定 ref 'refs/heads/”
- c# - 检查驱动是否卸载
- html - 404页面不显示
- javascript - 我的 js lib 问题中针对函数和元素的双重方法
- ios - 如何在ios中初始化我的ViewController扩展中的ui元素,swift
- c# - 输入数组长于此表中的列数
- angular - ag-grid中复选框的两种方式数据绑定
- html - My default option don't show in my select