Python错误集锦:OpenCV countNonZero()统计图像中非0的像素点时提示error: (-215:Assertion failed) cn == 1

原文链接:http://www.juzicode.com/python-error-countnonzero-cn-must-be-1

错误提示:

countNonZero()统计图像中非0的像素点时提示error: (-215:Assertion failed) cn == 1 in function ‘cv::countNonZero’

#VX公众号:桔子code / juzicode.com
import cv2 
img_src = cv2.imread('lena.jpg') 
count = cv2.countNonZero(img_src)
print('非零像素点个数:',count) 
==========运行结果:
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-11-652b3552c021> in <module>
      2 import cv2
      3 img_src = cv2.imread('lena.jpg')
----> 4 count = cv2.countNonZero(img_src)
      5 print('非零像素点个数:',count)

error: OpenCV(4.5.3) E:\juzicode\opencv-4.5.3\modules\core\src\count_non_zero.dispatch.cpp:128: error: (-215:Assertion failed) cn == 1 in function 'cv::countNonZero'

错误原因:

1、countNonZero()的输入图像只能是单通道图像。

解决方法:

1、将输入的图像转换为灰度图再计算非零像素值:

#VX公众号:桔子code / juzicode.com
import cv2 
img_src = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE) 
count = cv2.countNonZero(img_src)
print('非零像素点个数:',count) 
==========运行结果:
非零像素点个数: 262144

2、单独计算其分量图像的非零像素值:

#VX公众号:桔子code / juzicode.com
import cv2 
img_src = cv2.imread('lena.jpg') 
b,g,r = cv2.split(img_src)
count = cv2.countNonZero(b)
print('b通道非零像素点个数:',count) 
count = cv2.countNonZero(g)
print('g通道非零像素点个数:',count) 
count = cv2.countNonZero(r)
print('r通道非零像素点个数:',count) 
==========运行结果:
b通道非零像素点个数: 262144
g通道非零像素点个数: 262121
r通道非零像素点个数: 262144

扩展内容:

  1. OpenCV-Python教程


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

发表评论

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