Bug解决方案汇总

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)  #内部函数引用同名变量,并且修改这个变量。python会认为它是局部变量。因为在此处print之前,没有定义sum变量,所以会报错(建议与情况一比较,备注:此处只是比上例先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)

猜你喜欢

转载自blog.csdn.net/qq_35759272/article/details/126014306