在opencv中,使用cv2进行创建SIFT、SURF对象时,会显示cv2中没有create()方法。具体解决方法如下:
更换python版本、opencv-python版本
如果python版本不是3.7,需要卸载当前版本的python
如果opencv版本不是3.4.2,需要卸载当前当前opencv-python和opencv-contrib-python第三方包(我个人只卸载了opencv-python)
这里需要注意,python版本要与opecv版本要匹配,否则在通过pip下载opencv时,无法在镜像文件中或者官网中找到opencv的3.4.2版本。
pip uninstall opencv-python
pip uninstall opencv-contrib-python
下载python3.7,在此版本下通过pip下载opcv-python3.4.2.16以及opencv-contrib-python3.4.2.16
# 使用清华镜像文件
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python==3.4.2.16
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python==3.4.2.16
# 直接install
pip install opencv-python==3.4.2.16
pip install opencv-contrib-python=3.4.2.16
# 创建SIFT对象
sift=cv2.xfeatures2d.SIFT_create()
# opencv4.4.0以上的版本可以直接使用cv2.SIFT_create()
# 创建SURF对象
surf=cv2.xfeatures2d.SURF_create()
# 我所遇到surf对象的创建是通过这种方式创建成功,python版本是3.7,opecv版本是3.4.2