下面是一个使用OpenCV的方法。我们用Otsu的阈值来获得一个二值图像,这个图像的前景对象是白色的,背景是黑色的。从这里我们使用cv2.countNonZero(),它返回掩码上的白色像素数
找到白色像素的数量
pixels = cv2.countNonZero(thresh) # OR
# pixels = len(np.column_stack(np.where(thresh > 0)))
pixels 198580
我们还可以计算像素与总图像面积的百分比比率
import cv2
import numpy as np
image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray,0,255,cv2.THRESH_OTSU + cv2.THRESH_BINARY)[1]
pixels = cv2.countNonZero(thresh)
# pixels = len(np.column_stack(np.where(thresh > 0)))
image_area = image.shape[0] * image.shape[1]
area_ratio = (pixels / image_area) * 100
print('pixels', pixels)
print('area ratio', area_ratio)
cv2.imshow('thresh', thresh)
cv2.waitKey(0)