本文主要是介绍opencv-contrib-Python编译module 'cv2.cv2' has no attribute 'xfeatures2d',希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
opencv-contrib-Python编译module 'cv2.cv2' has no attribute 'xfeatures2d'
- 引言
- 解决步骤一
- 解决步骤二
引言
opencv-contrib-Python编译出现错误:
sift = cv.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’
即是sift = cv.xfeatures2d.SIFT_create()函数无法使用,也是opencv-contrib-python无法使用。解决方法为降低opencv版本,因为当初安装时是默认版本安装的,版本比较高,但是也不清楚为什么版本高了不支持,反正TensorFlow里面对版本对应要求比较严格。
解决步骤一
打开Anaconda卸载opencv。
pip uninstall opencv-python
pip uninstall opencv-contrib-python
解决步骤二
重装opencv-python、opencv-contrib-python。指定版本安装。
pip install opencv_python==3.4.2.16 pip install opencv-contrib-python==3.4.2.16
最后打开Pycharm运行sift算法测试:
import numpy as np
import cv2 as cv
img = cv.imread('test_1.jpg')
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
sift = cv.xfeatures2d.SIFT_create()
kp = sift.detect(gray,None)
img=cv.drawKeypoints(gray,kp,img)cv.imshow("SIFT", img)
cv.imwrite('sift_keypoints.jpg',img)
cv.waitKey(0)
cv.destroyAllWindows()

这篇关于opencv-contrib-Python编译module 'cv2.cv2' has no attribute 'xfeatures2d'的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!