python统计图片中黑白像素个数_使用OpenCV计算Python中图像中的黑色像素数

I have the following test code in Python to read, threshold and display an image:

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()

I would like to count the number of pixels within the image with a certain label, for instance black.

How can I do that ? I looked at tutorials of OpenCV but did not find any help :-(

Thanks!

解决方案

For black images you get the total number of pixels (rows*cols) and then subtract it from the result you get from cv2.countNonZero(mat).

For other values, you can create a mask using cv2.inRange() to return a binary mask showing all the locations of the color/label/value you want and then use cv2.countNonZero to count how many of them there are.

UPDATE (Per Miki's comment):

When trying to find the count of elements with a particular value, Python allows you to skip the cv2.inRange() call and just do:

cv2.countNonZero(img == scalar_value)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值