python+matplotlib对柿子图的彩色和灰色直方图统计
生活随笔
收集整理的这篇文章主要介绍了
python+matplotlib对柿子图的彩色和灰色直方图统计
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
python+matplotlib对柿子图的彩色和灰色直方图统计
- 前言
- 代码
- 有疑待查
- 参考链接
前言
最近在对柿子图统计时,遇到了np.histogram函数的参数bins的用法不理解,查找了大量资料后,有了初步理解,因此记录下来。
代码
#coding:utf8 import cv2 import matplotlib.pyplot as plt import numpy as np import sys import osfilename = 'E:\Study\preview.jpg' #柿子色彩图 ##-------------色彩直方图-----------## img = cv2.imread(filename) colors=['blue','green','red']for i in range(3):hist,x=np.histogram(img[:,:,i].ravel(),bins=256,range=(0,256))#img[:,:,i]是表示单个通道的集合.单个通道的集合是一行一行的,因此是二维数组,在这里使用raval方法切换为一维#bins是实际上对应的就是X轴的坐标,你需要统计对某个元素进行数量统计的集合,传入256时表示从将rang(0-256)分成bins(即256等份,这样间距刚好为1)份的每一个正整数都进行数量统计#当bins传入指定数组时比如[0,1,3,4]则只会对这四个数进行统计#rang是限制bins的上下限数值,超出range范围的bins无效,比如当range=(0,200)时,bins=[80,100,244]中的255是无效的#返回值hist是每一个元素重复出现次数的合集#返回值X由bins决定,比如bins=256,则x就是0-256的所有整数和0的合集,如果bins传入[0,1,2,4],那么x就只是[0,1,2,4]4个元素# print(hist)#print(x)# print(x[:-1])# print(x[1:])plt.plot(0.5*(x[:-1]+x[1:]),hist,label=colors[i],color=colors[i])#第一,第二个参数是x,y轴数值,后面的是风格,label是标签说明,color是图画颜色#自己使用时发现必须使用legend方法才能显示文字标签 plt.legend() plt.show() #------------------------------------------------------------# #灰度图片直方图统计imgGrey=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #直接拔柿子图转为灰度图片 colors=['grey'] print(imgGrey.shape) for i in range(1):hist,x= np.histogram(imgGrey[:,:].ravel(),bins=256,range=(0,256))plt.plot(x[:-1],hist,label=colors[i],color=colors[i])plt.legend() plt.show()有疑待查
1.查找资料时,发现作者在plt.plot中使用的是0.5*(x[:-1]+x[1:])来确定X轴的范围,但我实际中发现x作为需要统计元素的集合,为何不直接使用x[:-1]作为X轴?所以在彩色图和灰度图中,我用了两种不同的方法生成X轴坐标
参考链接
https://blog.csdn.net/qq_37791134/article/details/104109378
总结
以上是生活随笔为你收集整理的python+matplotlib对柿子图的彩色和灰色直方图统计的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: aardio - 虚表库全新升级,支持图
- 下一篇: 【python】自动登录51cto家园