我在
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,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的教程,但没有找到任何帮助:-(
谢谢!
解决方法
对于黑色图像,您将获得总像素数(行*列),然后从您从
countNonZero(mat)
获得的结果中减去它.
对于其他值,您可以使用inRange()
创建蒙版以返回显示所需颜色/标签/值的所有位置的二进制蒙版,然后使用countNonZero计算其中有多少个.
更新(每个Miki的评论):
在尝试查找具有特定值的元素计数时,Python允许您跳过inRange()调用并执行以下操作:
countNonZero(img == scalar_value)