赞
踩
图像直方图是不同像素值范围的像素个数统计图,无空间信息。
plt.hist(x: Any, bins: Any = None, range: Any = None, density: Any = None, weights: Any = None, cumulative: bool = False, bottom: Any = None, histtype: str = 'bar', align: str = 'mid', orientation: str = 'vertical', rwidth: Any = None, log: bool = False, color: Any = None, label: Any = None, stacked: bool = False, normed: Any = None,
*, data: Any = None, **kwargs: Any)
属性 | 说明 | 类型 |
---|---|---|
x | 数据 | 数值类型 |
bins | 条形数 | int |
range | x轴的范围 范围之外的将被舍弃。 | 数组元组(起,终) |
density | 是否以密度形式显示 | bool |
bottom | y轴的起始位置 | 数值类型 |
histtype | 线条类型 | ‘bar’,方形; “barstacked”:柱形, “step”:“未填充线条” “stepfilled”:“填充线条” |
cv2.calcHist(images: Any, channels: Any, mask: Any, histSize: Any, ranges: Any, hist: Any = None, accumulate: Any = None)
images: 表示输入图像,传入时应该用中括号 [ ] 括起来
channels: 这个值也得用 [ ] 传入。
mask: 表示掩膜图像。如果统计整幅图,那么为None。主要是如果要统计部分图的直方图,就得构造相应的掩膜来计算。
histSize 表示灰度级的个数,需要中括号,比如[256]
import cv2 from matplotlib import pyplot as plt def show(name, img): cv2.imshow(name, img) cv2.waitKey(0) one = cv2.imread('E:/PycharmProjects/one.jpg') show('img', one) # 1.matplotlib画直方图 def plt_his(img): plt.hist(img.ravel(), 256, [0, 256]) #ravel功能是将多维数组降为一维数组 plt.show() plt_his(one) # 2.利用openCV的API画三个通道的直方图 def img_his(img): color = ('blue', 'green', 'red') #画笔颜色的值可以为大写或小写或只写首字母或大小写混合 for i, color in enumerate(color): #enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据下标和数据,一般用在 for 循环当中。 hist = cv2.calcHist([img], [i], None, [256], [0, 256]) plt.plot(hist, color=color) plt.xlim([0, 256]) plt.show() img_his(one) cv2.destroyAllWindows()
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据下标和数据,一般用在 for 循环当中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。