OpenCV-Python:绘制直方图和统计直方图
简介直方图(Histogram)又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据类型,纵轴表示分布情况,本文主要介绍关于Python matplotlib.pyplot.hist()绘制直方图
一、matplotlib.pyplot.hist()语法
matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype=’bar’, align=’mid’, orientation=’vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, \*, data=None, \*\*kwargs)
参数:此方法接受以下描述的参数:
- x:此参数是数据序列。
- bins:此参数是可选参数,它包含整数,序列或字符串。
- range:此参数是可选参数,它是箱子的上下限。
- density:此参数是可选参数,它包含布尔值。
- weights:此参数是可选参数,并且是一个权重数组,与x的形状相同。
- bottom:此参数是每个容器底部基线的位置。
- histtype:此参数是可选参数,用于绘制直方图的类型。 {‘bar’,‘barstacked’,‘step’,‘stepfilled’}
- align:此参数是可选参数,它控制如何绘制直方图。 {‘left’,‘mid’,‘right’}
- rwidth:此参数是可选参数,它是条形图的相对宽度,是箱宽度的一部分
- log:此参数是可选参数,用于将直方图轴设置为对数刻度
- color:此参数是一个可选参数,它是一个颜色规格或一系列颜色规格,每个数据集一个。
- label:此参数是可选参数,它是一个字符串或匹配多个数据集的字符串序列。
- normed:此参数是可选参数,包含布尔值,而是使用density关键字参数。
返回值:这将返回以下内容:
- n:这将返回直方图箱的值。
- 垃圾桶:这将返回箱子的边。
- 补丁:这将返回用于创建直方图的单个补丁的列表。
二、matplotlib.pyplot.hist()绘制图像的直方图
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("1-gray.bmp", cv2.IMREAD_UNCHANGED)
cv2.imshow("img", img)
#绘制直方图,这里需要将多维数组转化成一维数组,用ravel()函数
plt.hist(img.ravel(), 256)
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
三、OpenCV-Python直方图计算
使用函数
hist = cv2.calcHist(images, channels, mask, histSize, ranges, accumulate)
参数说明:
- images:原图
- channels:指定通道 [0]代表灰度图,如果读入的图像不是灰度图,该值可以是[0],[1],[2]分别代表通道 B,G,R
- mask:掩码图像,进行整张图的绘制时为 None
- histSize:子区段数目,如果我们统计0~255每个像素值,histSize=256;如果划分区间,比如0~15,16~31…240~255这样16个区间,histSize=16
- ranges:像素值范围,要计算的像素值范围,一般为[0,255]
- accumulate:累计标识,一般可以省略
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("1-gray.bmp", cv2.IMREAD_UNCHANGED)
cv2.imshow("img", img)
# 直方图计算
hist = cv2.calcHist([img], [0], None, [256], [0, 255])
print(type(hist))
print(hist.size)
print(hist.shape)
print(hist)
cv2.waitKey()
cv2.destroyAllWindows()
运行结果:
<class 'numpy.ndarray'>
256
(256, 1)
[[3.000e+00]
[3.500e+01]
[4.000e+01]
[7.300e+01]
[1.170e+02]
[1.020e+02]
[1.180e+02]
[1.450e+02]
...
[4.000e+00]
[0.000e+00]]
从返回结果可以看出,hist是一个n行1列的数组,所以可以使用、matplotlib.pyplot.plot()来绘制简单的图像.
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("1-gray.bmp", cv2.IMREAD_UNCHANGED)
cv2.imshow("img", img)
# 直方图计算
hist = cv2.calcHist([img], [0], None, [256], [0, 255])
print(type(hist))
print(hist.size)
print(hist.shape)
print(hist)
# 绘制直方图
plt.plot(hist,color="r")
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()

上面是绘制的灰度图像的直方图,下面是一张图彩色图片的直方图:
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("1-1.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("img", img)
# 直方图计算
histb = cv2.calcHist([img], [0], None, [256], [0, 255])
histg = cv2.calcHist([img], [1], None, [256], [0, 255])
histr = cv2.calcHist([img], [2], None, [256], [0, 255])
# 绘制直方图
plt.plot(histb,color="b")
plt.plot(histg,color="g")
plt.plot(histr,color="r")
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()

快速生成表格
Towxml 是一个让小程序(微信/QQ)可以解析Markdown、HTML的解析库。能够使小程序完美解析Markdown内容。
Fake2DB是emirozer 开发的一个生成测试数据的工具。目前支持 SQLite、MySQL、PostgreSQL 和 MongoDB。
《精忠报国》是歌手屠洪刚演唱的一首歌曲。由陈涛作词,张宏光作曲。收录在屠洪刚1999年发行的同名专辑《精忠报国》里。歌曲内容反应了南宋抗金名将岳飞的戎马一生,歌颂岳飞精忠报国的强烈爱国主义精神。该曲也是何中华、俞飞鸿等主演古龙武侠剧《三少爷的剑》的片尾曲。
某些时候如果想快速将服务器中的某些资源共享给其他人,可以使用python来实现,python自带了一个快速创建HTTP服务的方式,可以将允许时目录下的所有文件以文件服务器供他人进行访问和下载。
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。