小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

python+opencv圖像處理(十三)

 pythonjava學(xué)習(xí) 2021-04-06

直方圖

又回到了校園,空氣是如此的新鮮,人是如此的少......
心情有點(diǎn)微妙...
看一看窗戶外面的天...

直方圖,在高中數(shù)學(xué)里好像就出現(xiàn)了。
它是數(shù)值數(shù)據(jù)分布的圖形表示。
Python里,直方圖的繪制方法不止一種,先介紹常用的一種。
1、Matplotlib進(jìn)行直方圖繪制
Matplotlib這個(gè)包是Python中比較強(qiáng)大的繪圖的包,可以繪制包括餅圖、條形圖、散點(diǎn)圖、折線圖、面積圖、三維圖在內(nèi)的等等等等二維三維圖形,等有時(shí)間,我再慢慢整理發(fā)布。
今天先來畫直方圖。
matplotlib.pyplot中是用hist()函數(shù)來繪制直方圖。
繪制直方圖時(shí),首先要有數(shù)據(jù),hist()函數(shù)會(huì)自動(dòng)根據(jù)數(shù)據(jù)和柱子的數(shù)目去數(shù)每個(gè)柱子應(yīng)該有多少數(shù)據(jù),并繪制成圖形。
以下圖為例來說明:

其代碼如下:
import matplotlib.pyplot as plt#要使用matplotlib來繪制,必須先導(dǎo)入此包
import numpy as np
x=np.random.randint(0,100,100)#生成【0-100】之間的100個(gè)數(shù)據(jù)
plt.hist(x,bins=10)#x為要統(tǒng)計(jì)的數(shù)據(jù),bins表示有多少條柱子
plt.xlabel('x')#x軸標(biāo)簽
plt.ylabel('y')#y軸標(biāo)簽
plt.xlim(0,100)#設(shè)置x軸分布范圍
plt.show()#顯示圖形
hist函數(shù)各參數(shù)如下:(此藍(lán)色部分來源于網(wǎng)絡(luò))
hist(x,bins=None,range=None, density=None, bottom=None, histtype='bar',, log=False, color=None, label=None, stacked=False, normed=None)
x: 數(shù)據(jù)集,最終的直方圖將對(duì)數(shù)據(jù)集進(jìn)行統(tǒng)計(jì)bins: 統(tǒng)計(jì)的區(qū)間分布,即要顯示幾條柱子range: tuple, 顯示的區(qū)間,range在沒有給出bins時(shí)生效density: bool,是否歸一化,若為True則歸一化顯示histtype: 可選{'bar', 'barstacked', 'step', 'stepfilled'}之一,默認(rèn)為bar柱形,
align: 可選{'left', 'mid', 'right'}之一,默認(rèn)為'mid',控制柱狀圖的水平分布,left或者right,會(huì)有部分空白區(qū)域,推薦使用默認(rèn)log: bool,默認(rèn)False,即y坐標(biāo)軸是否選擇指數(shù)刻度stacked: bool,默認(rèn)為False,是否為堆積狀圖

--------------------------------代碼太多,休息一下

--------------------------------我是廣告開始的分隔線

--------------------------------我是廣告結(jié)束的分隔線

--------------------------------接著,來...

2,顯示歸一化直方圖

其代碼如下:
import matplotlib.pyplot as plt
import numpy as np
x=np.random.randint(0,100,100)
plt.hist(x,bins=10,color='r',density=True,histtype='bar',rwidth=0.5,align='right')
y=np.random.randint(0,100,100)
plt.hist(y,bins=10,color='b',density=True,histtype='bar',rwidth=0.5)
plt.xlabel('x')
plt.ylabel('y')
plt.xlim(0,100)
plt.show()
例3. 判斷兩個(gè)直方圖是否相同

在此圖中有三個(gè)直方圖,比較之后結(jié)果如下:

代碼如下:
import matplotlib.pyplot as plt
import numpy as np
x=np.random.randint(0,100,100)
n1,bins1,patches1=plt.hist(x,bins=10,color='r',density=True,histtype='bar',rwidth=0.5,align='right')
n2,bins2,patches2=plt.hist(x,bins=10,color='b',density=True,histtype='bar',rwidth=0.5)
y=np.random.randint(0,100,100)
n3,bins3,patches3=plt.hist(y,bins=10,color='g',density=True,histtype='bar',rwidth=0.5)
plt.xlabel('x')
plt.ylabel('y')
plt.xlim(0,100)
plt.show()
for i in range(len(n1)):
#    print(n1[i],n2[i])
    if n1[i]!=n2[i]:
        break
if i<len(n1)-1:
    print("n1n2不相等")
else:
    print("n1n2相等")
for i in range(len(n1)):
 #   print(n1[i],n3[i])
    if n1[i]!=n3[i]:
        break
if i<len(n1)-1:
    print("n1n3不相等")
else:
    print("n1n3相等")
我這種判斷方法感覺有點(diǎn)傻,網(wǎng)上有其他的判斷直方圖相似性等的函數(shù),有感興趣的朋友請(qǐng)自行搜索。

2、cv.calcHist()也可以畫直方圖。將在下一篇中介紹。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多