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()

为了能让虚拟机能连接网络,并且能与宿主机能相互进行访问,所以需要多虚拟机几种网络模式进行学习,以便后期能快速的进行配置。
nodejs中使用npm和yarn,使用最新阿里云镜像 aliyun mirror,网上很多还是文章用的是下面这个地址~~yarn config set registry https://registry.npm.taobao.org~~
《是妈妈是女儿》聚焦母女间未曾言明的爱意,以书信对话的形式呈现出各自的内心独白,表达彼此的牵挂。黄绮珊与希林娜依·高用跨越时空、打开心扉、深情对唱的形式,将天下母女爱的寄语化作心灵的倾诉。黄绮珊的每一句话,每一个字都演绎出了妈妈对女儿的爱,而希林依娜·高把女儿对妈妈的爱由不理解到理解再到感恩演绎得淋漓尽致。
OpenCV-Python图像类型转换是用cv2.cvtcolor()函数,用于将图像从一个颜色空间转换为另一个颜色空间。它的参数包括输入图像、目标颜色空间和转换方式。例如,将RGB图像转换为灰度图像可以使用cv2.COLOR_RGB2GRAY作为转换方式。
默认情况下 pip 使用的是国外的镜像,在下载的时候速度非常慢,本文我们介绍使用国内源对pip进行加速。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
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,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。