乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python+opencv圖像處理(十三)

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

      直方圖

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

      直方圖,在高中數(shù)學(xué)里好像就出現(xiàn)了。
      它是數(shù)值數(shù)據(jù)分布的圖形表示。
      Python里,直方圖的繪制方法不止一種,先介紹常用的一種。
      1、Matplotlib進行直方圖繪制
      Matplotlib這個包是Python中比較強大的繪圖的包,可以繪制包括餅圖、條形圖、散點圖、折線圖、面積圖、三維圖在內(nèi)的等等等等二維三維圖形,等有時間,我再慢慢整理發(fā)布。
      今天先來畫直方圖。
      matplotlib.pyplot中是用hist()函數(shù)來繪制直方圖。
      繪制直方圖時,首先要有數(shù)據(jù),hist()函數(shù)會自動根據(jù)數(shù)據(jù)和柱子的數(shù)目去數(shù)每個柱子應(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個數(shù)據(jù)
      plt.hist(x,bins=10)#x為要統(tǒng)計的數(shù)據(jù),bins表示有多少條柱子
      plt.xlabel('x')#x軸標簽
      plt.ylabel('y')#y軸標簽
      plt.xlim(0,100)#設(shè)置x軸分布范圍
      plt.show()#顯示圖形
      hist函數(shù)各參數(shù)如下:(此藍色部分來源于網(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ù)集,最終的直方圖將對數(shù)據(jù)集進行統(tǒng)計bins: 統(tǒng)計的區(qū)間分布,即要顯示幾條柱子range: tuple, 顯示的區(qū)間,range在沒有給出bins時生效density: bool,是否歸一化,若為True則歸一化顯示histtype: 可選{'bar', 'barstacked', 'step', 'stepfilled'}之一,默認為bar柱形,
      align: 可選{'left', 'mid', 'right'}之一,默認為'mid',控制柱狀圖的水平分布,left或者right,會有部分空白區(qū)域,推薦使用默認log: bool,默認False,即y坐標軸是否選擇指數(shù)刻度stacked: bool,默認為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. 判斷兩個直方圖是否相同

      在此圖中有三個直方圖,比較之后結(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相等")
      我這種判斷方法感覺有點傻,網(wǎng)上有其他的判斷直方圖相似性等的函數(shù),有感興趣的朋友請自行搜索。

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多