Python错误集锦:OpenCV norm()求汉明范数时Assertion failed:((normType == NORM_HAMMING || normType == NORM_HAMMING2) && _src.type() == CV_8U)

原文链接:http://www.juzicode.com/python-error-opencv-norm-normtype-src-type-assert-failed

错误提示:

计算图像的汉明范式时提示:(-215:Assertion failed) normType == NORM_INF || normType == NORM_L1 || normType == NORM_L2 || normType == NORM_L2SQR || ((normType == NORM_HAMMING || normType == NORM_HAMMING2) && _src.type() == CV_8U) in function ‘cv::norm’

#VX公众号:桔子code / juzicode.com
import cv2
print('cv2.__version__:',cv2.__version__)
img_src = cv2.imread('lena.jpg')
val = cv2.norm(img_src,cv2.NORM_L1)
print('lena图像L1范数:',val )
val = cv2.norm(img_src,cv2.NORM_HAMMING)
print('lena图像的NORM_HAMMING:',val )
val = cv2.norm(img_src,cv2.NORM_HAMMING2)
print('lena图像的NORM_HAMMING2:',val )
cv2.__version__: 4.5.3
lena图像L1范数: 100844698.0
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-14-cd92031bf308> in <module>
      5 val = cv2.norm(img_src,cv2.NORM_L1)
      6 print('lena图像L1范数:',val )
----> 7 val = cv2.norm(img_src,cv2.NORM_HAMMING)
      8 print('lena图像的NORM_HAMMING:',val )
      9 val = cv2.norm(img_src,cv2.NORM_HAMMING2)

error: OpenCV(4.5.3) E:\juzicode\opencv-4.5.3\modules\core\src\norm.cpp:604: error: (-215:Assertion failed) normType == NORM_INF || normType == NORM_L1 || normType == NORM_L2 || normType == NORM_L2SQR || ((normType == NORM_HAMMING || normType == NORM_HAMMING2) && _src.type() == CV_8U) in function 'cv::norm'

错误原因:

1、计算汉明范数时,像素值的数据类型只能是CV_8U,也就是说只能是单通道图像,且数据类型为np.unit8或者CV_8U类型。

解决方法:

1、读入的数据经过灰度化处理只包含单个通道:

#VX公众号:桔子code / juzicode.com
import cv2
print('cv2.__version__:',cv2.__version__)
img_src = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE) 
val = cv2.norm(img_src,cv2.NORM_L1)
print('lena图像L1范数:',val )
val = cv2.norm(img_src,cv2.NORM_HAMMING)
print('lena图像的NORM_HAMMING:',val )
val = cv2.norm(img_src,cv2.NORM_HAMMING2)
print('lena图像的NORM_HAMMING2:',val )
==========运行结果:
cv2.__version__: 4.5.3
lena图像L1范数: 32558442.0
lena图像的NORM_HAMMING: 1032143.0
lena图像的NORM_HAMMING2: 809303.0

扩展内容:

  1. OpenCV-Python教程


如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注