如何创建二进制图像的直方图?

时间:2018-06-07 15:52:03

标签: python numpy matplotlib image-processing histogram

我有二进制图像(只有2种颜色,黑色和白色),Binary Image

我想创建图像的直方图。我试过这些代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('bin_003.png')
color = ('b','g','r')
for i,col in enumerate(color):
    histr = cv2.calcHist([img],[i],None,[256],[0,256])
    plt.plot(histr,color = col)
    plt.xlim([0,256])
plt.show()

但代码显示Histogram 而不是在x轴上仅显示0和1。

1 个答案:

答案 0 :(得分:2)

由于此处有黑白图像,因此它应该只有一个通道。你不需要RGB频道。您可以使用plt.hist创建单个直方图。

from matplotlib import pyplot as plt

img = plt.imread('https://i.stack.imgur.com/y19dr.png')

plt.hist(img.flatten(), bins=[-.5,.5,1.5], ec="k")
plt.xticks((0,1))
plt.show()

enter image description here