SIFT OpenCV 官方文档:

https://docs.opencv.org/master/da/df5/tutorial_py_sift_intro.html

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_sift_intro/py_sift_intro.html

AttributeError: module 'cv2' has no attribute 'SIFT'

在用python使用opencv进行SIFT时候,编译出现这样问题:

Traceback (most recent call last):
File "F:\image\test.py", line 7, in <module>
sift = cv2.SIFT()

  

出错代码如下:

import cv2
import numpy as np img = cv2.imread('home.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) sift = cv2.SIFT()
kp = sift.detect(gray,None) img=cv2.drawKeypoints(gray,kp)

  

原因:opencv将SIFT等算法整合到xfeatures2d集合里面了。变更后写法如下:

import cv2
import numpy as np img = cv2.imread('home.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(gray,None) img=cv2.drawKeypoints(gray,kp,img)
cv2.imwrite('sift_keypoints.jpg',img)

  

然后又出现错误:

Traceback (most recent call last):
File "F:\image\test.py", line 7, in <module>
sift = cv2.xfeatures2d.SIFT_create()
AttributeError: module 'cv2' has no attribute 'xfeatures2d'

  

再尝试解决:

出错原因:

**原因:**3.X以后OpenCv只包含部分内容,需要神经网络或者其他的函数需要导入opencv_contrib

解决方法:

pip install opencv-contrib-python

注意: 
如果已经安装OpenCv2,则需要先卸载pip uninstall opencv-python再安装

参考资料:https://pypi.python.org/pypi/opencv-contrib-python

再次出错:

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'

  

问题待解决。。。

------------------------------

感谢,按照一楼大神的方法,问题已解决。

版本的问题,直接在终端pip install opencv-contrib-python和你一样的问题,后来重新装了opencv-contrib-python 3.3版本,可以正常使用。
具体来说就是
第一步,卸载原有的opencv-contrib-python
pip3 uninstall opencv-contrib-python(我使用的是python3.6.5)
如果你使用的是python2的版本,使用pip uninstall opencv-contrib-python
第二步,安装新的版本
pip3 install --user opencv-contrib-python==3.3.0.10我使用的是python3.6.5)
如果你使用的是python2的版本,使用pip install --user opencv-contrib-python==3.3.0.10。
如果出现了readtimeouterror就关掉terminal重新输入几次。因为下载源在外网,可能不稳定。

最新文章

  1. Spring 事务传递教程_有实例
  2. MySQL 外键异常分析
  3. ICON的设计很重要
  4. Java学习笔记之==与equals
  5. Win7设置局域网共享
  6. python中干掉tornado的连接失败日志
  7. SSH 之 Spring的源码(二)——Bean实例化
  8. MySQL数据库事务及其特性
  9. python套接字解决tcp粘包问题
  10. 三、文件IO——系统调用(续)
  11. socket 套接字总结
  12. MySql语句中Union和join的用法
  13. springMVC注解(一)Controller
  14. js事件之event.preventDefault()与(www.111cn.net)event.stopPropagation()用法区别
  15. 单引号、双引号、int和char
  16. IP设置-内置服务器-外置服务器
  17. 学习笔记 ST算法
  18. C++之运行时类型识别RTTI
  19. linux内核获取当前进程路径分析
  20. mongodb 安装部署说明

热门文章

  1. 深入Delphi下的DLL编程
  2. BeanPostProcessor使用心得
  3. FAQ:枚举和常规的值,到底哪种更符合程序使用?
  4. 如何写科技论文How to write a technical paper
  5. pidera安装node.js(树莓派)
  6. SpringMVC使用ModelAndView进行重定向
  7. java垃圾回收机制--可达性算法
  8. Android -- 图像处理(信息量超大)
  9. luigi操作hive表
  10. 【转】TCP分段与IP分片