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家园