欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python+matplotlib对柿子图的彩色和灰色直方图统计

发布时间:2024/3/13 python 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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对柿子图的彩色和灰色直方图统计的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。