使用 python 绘制每行黑色像素的数量

Plot number of black pixels per row using python

我正在 Python 中处理二值图像,我想绘制一个直方图,其中 shows/returns 每行黑色像素的数量,而不是总数。到目前为止这还行不通:

hist = cv2.calcHist([binary_image], [0], None, [height], [0, weight])    

plt.title("Histogram")    

plt.plot(hist)

plt.xlim([0,weight])

plt.show()

我是用 MATLAB 做的,效果很好

im_hist = hist(t_image, 2);

plot(1:size(im_hist,2),im_hist(2,:))

假设 binary_image 是一个二维数组,这将有效:

counts = np.sum(binary_image==0, axis=1)

plt.plot(counts)

但是,您的 MATLAB 函数并没有以一般方式执行您描述的操作。它将您的数据分为两个范围,然后计算每个范围内有多少数据点。这只有在您的图像只有两个级别时才能正常工作。如果不是,那么您的 "black" 将包含黑色以外的值。等效的 python 函数是这样的:

counts = np.sum(binary_image<binary_image.max()/2., axis=1)

plt.plot(counts)