使用 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)
我正在 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)