使用OpenCV计算Python中图像中的黑色像素数

时间:2015-09-15 16:16:27

标签: python opencv

我在Python中有以下测试代码来读取,阈值和显示图像:

import cv2
import numpy as np 
from matplotlib import pyplot as plt

# read image
img = cv2.imread('slice-309.png',0)
ret,thresh = cv2.threshold(img,0,230, cv2.THRESH_BINARY)
height, width = img.shape
print "height and width : ",height, width
size = img.size
print "size of the image in number of pixels", size 

# plot the binary image
imgplot = plt.imshow(img, 'gray')
plt.show()

我想用一定的标签来计算图像中的像素数,例如黑色。 我怎样才能做到这一点 ?我查看了OpenCV的教程,但没有找到任何帮助: - (

谢谢!

2 个答案:

答案 0 :(得分:10)

对于黑色图像,您可以获得像素总数(行* cols),然后从countNonZero(mat)得到的结果中减去它。

对于其他值,您可以使用inRange()创建蒙版以返回显示所需颜色/标签/值的所有位置的二进制蒙版,然后使用countNonZero计算其中的多少有。。

更新(根据Miki的评论):

在尝试查找具有特定值的元素数时,Python允许您跳过inRange()调用并执行:

countNonZero(img == scalar_value)  

答案 1 :(得分:-1)

import cv2
image = cv2.imread("pathtoimg", 0)
count = cv2.countNonZero(image)
print(count)