问题描述:
在数字图像处理课程实验中,特征匹配实验用到了sift算法,用vscode第一次运行使用了opencv4.4以及python3.8,出现了报错
module 'cv2.cv2' has no attribute 'xfeatures2d'
然后anaconda prompt中安装opencv-python 3.4.2.16 命令如下,出现无法找到相关版本的报错
pip install opencv-python==3.4.2.16
还有报错为
cv2.error: OpenCV(3.4.8) 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'
原因分析
第一次报错原因是因为opencv4.4版本由于sift专利原因已经无法使用;第二次报错则是因为opencv4.2与python3.8不匹配,需要降到3.6;这个报错仍然是opencv版本问题
解决方案:
如果是python3.6,只需要安装opencv相关版本的包就行了,在anaconda prompt中执行如下命令
pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16
因为我是python3.8,所以创建了一个虚拟环境py36,从而进行相关配置,关于创建虚拟环境和激活虚拟环境请参照博客anaconda中创建虚拟环境 - 简书,然后在激活的虚拟环境中执行上述命令
最后在VS code终端中运行py文件