1.成功解决AttributeError: module ‘cv2.cv2’ has no attribute ‘xfeatures2d’
- 原因:opencv自3.4.2.17之后的版本,就不支持该方法了。
- 解决办法:
- python2:
- pip uninstall opencv-contrib-python
- pip install opencv-contrib-python==3.4.2.17
- python3:
- python3 -m pip uninstall opencv-contrib-python
- python3 -m pip install opencv-contrib-python==3.4.2.17
- 拓展:
- xfeatures2d:做特征检测与匹配,在物体检测,视觉跟踪,三维重建等领域都有广泛的应用,内置有SIFT、SURF、ORB 、AKAZE
- 参考链接:https://www.jianshu.com/p/0a5991223306
2.全局变量报错:UnboundLocalError: local variable ‘l’ referenced before assignment
- 原因:
- 当搜索一个变量的时候,python先从局部作用域开始搜索,如果在局部作用域没有找到那个变量,那样python就在全局变量中找这个变量,如果找不到抛出异常(NAMEERROR或者Unbound-LocalError,这取决于python版本。)
- 如果内部函数有引用外部函数的同名变量或者全局变量,并且对这个变量有修改.那么python会认为它是一个局部变量,又因为函数中没有sum的定义和赋值,所以报错。
import sys
sum=5
def add(a=1,b=3):
print(a,b)
print(sum)
sum=b+a
print(sum)
add(4,8)
print sum
3.成功解决TypeError: ‘int’ object is not callable
- 原因:python中变量名和方法名相同,当这两个名称重复时,程序会默认调用Int型对象
- 解决办法:更换变量名
4.成功解决resize错误:cv2.error: OpenCV(4.6.0) /io/opencv/modules/imgproc/src/resize.cpp:3930: error: (-215:Assertion failed) func != 0 in function ‘resize’
- 原因:
- 可能原因1:路径错误
- 可能原因2:输入图像的维度正确的是(h,w,3),但是经过下面的两个函数后,输入图像的变为(w,h,3),比如用了transpose交换两个维度
- 最终原因:输入的是int类型,应该输入float类型
- 解决办法:
input = input.astype(float)