繁体   English   中英

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

[英]count number of black pixels in an image in Python with 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 的教程,但没有找到任何帮助:-(

谢谢!

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

对于其他值,您可以使用cv2.inRange()创建一个掩码以返回一个二进制掩码,显示您想要的颜色/标签/值的所有位置,然后使用cv2.countNonZero来计算它们中有多少。

更新(根据 Miki 的评论):

当尝试查找具有特定值的元素计数时,Python 允许您跳过cv2.inRange()调用,只需执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM