<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
首先我們先要了解一下python三大劍客之一——matplotlib
我們都知道matlab作為一個工具是公認的繪圖牛,但是我想說的是python下的matplotlib這個超級劍客也是非常厲害的,因為python近年來才火熱起來,所以熱度沒有matlib高,但是matlib可以實現的功能作為python都是差不多可以實現的。
我們迴歸正題,先來介紹下matplotlib怎麼簡單的畫一個直方圖。
import numpy as np import matplotlib.pyplot as plt x=np.arange(0,5,0.1) y=np.sim(x) plt.plot(x,y)
簡單的不能再簡單了吧,我們使用它去繪製一個sin(x)的函數影象。
那麼matplotlib如何和CV一起工作呢?
import cv2 import matplotlib.pyplot as plt o=cv2.imread("image\boatGray.bmp") histb = cv2.calcHist([o],[0],None,[256],[0,255]) plt.plot(histb,color='b') plt.show()
結果是(也很好理解吧):
針對於彩色影象我們也可以針對BGR分別作圖。
import cv2 import matplotlib.pyplot as plt o=cv2.imread("image\girl.bmp") histb = cv2.calcHist([o],[0],None,[256],[0,255]) histg = cv2.calcHist([o],[1],None,[256],[0,255]) histr = cv2.calcHist([o],[2],None,[256],[0,255]) plt.plot(histb,color='b') plt.plot(histg,color='g') plt.plot(histr,color='r') plt.show()
直方圖的繪製我們使用的函數還有:函數hist
功能:根據資料來源和畫素級繪製直方圖。
語法: hist(資料來源,畫素級)
資料來源:影象,必須是一維陣列。
畫素級:一般是256,指[0,255]
功能:將多維陣列降為一維陣列。格式:一維陣列=多維陣列.ravel()
import cv2 import matplotlib.pyplot as plt o=cv2.imread("image\boat.jpg") cv2.imshow("o",o) cv2.waitKey() cv2.destroyAllWindows() plt.hist(o.ravel(),256)
使用OpenCV對影象進行繪製的和橫座標表示畫素值比如[0,255],縱座標表示畫素值的個數。
繪製函數:
hist = cv2.calcHist( images, channels, mask, histSize, ranges, accumulate )
其中,hist返回結果是一個直方圖,返回的直方圖,是一個二維陣列。
image原始影象:影象需要使用“[ ]”括起來使用。
channels:
通道編號需要用中括號括起來輸入影象是灰度圖時,它的值是[0];彩色影象可以是[0],[1],[2]。分別對應通道B,G,R。
mask:掩碼影象統計整幅影象的直方圖,設為None。統計影象某一部分的直方圖時,需要掩碼影象。
histSize
BINS的數量,例如【256】
ranges
畫素值範圍RANGE
accumulate預設值為false。如果被設定為true,則直方圖在開始分配時不會被清零。該引數允許從多個物件中計算單個直方圖,或者用於實時更新直方圖。多個直方圖的累積結果,用於對一組影象計算直方圖。
使用OpenCV畫出直方圖:
import cv2 import matplotlib.pyplot as plt o=cv2.imread("image\girl.bmp") histb = cv2.calcHist([o],[0],None,[256],[0,255]) histg = cv2.calcHist([o],[1],None,[256],[0,255]) histr = cv2.calcHist([o],[2],None,[256],[0,255]) plt.plot(histb,color='b') plt.plot(histg,color='g') plt.plot(histr,color='r') plt.show()
掩碼說實話就是使用掩膜的黑色部分把原始影象的部分給覆蓋掉,也稱為過濾掉。那麼我們怎麼做呢?首先我們需要建立一個掩膜:
mask=np.zeros(image.shape,np.uint8) mask[200:400,200:400]=255
首先建立一個全0的和原影象size一致的,然後我們把指定範圍指定為白色。然後傳入函數內:
import cv2 import numpy as np import matplotlib.pyplot as plt 顯示直方圖 image=cv2.imread("image\girl.bmp",cv2.IMREAD_GRAYSCALE) mask=np.zeros(image.shape,np.uint8) mask[200:400,200:400]=255 histMI=cv2.calcHist([image],[0],mask,[256],[0,255]) histImage=cv2.calcHist([image],[0],None,[256],[0,255]) plt.plot(histImage) plt.plot(histMI)
結果是:
掩膜原理:
說實在的就是與和或的關係,與就是一個不行就都不行。或就是一個行就可以。
而我們的掩膜原理主要用到的就是與操作;
計算結果 = cv2.bitwise_and(影象1,影象2)
import cv2 import numpy as np import matplotlib.pyplot as plt image=cv2.imread("image\boat.bmp",0) mask=np.zeros(image.shape,np.uint8) mask[200:400,200:400]=255 mi=cv2.bitwise_and(image,mask) cv2.imshow('original',image) cv2.imshow('mask',mask) cv2.imshow('mi',mi) cv2.waitKey() cv2.destroyAllWindows()
在維基百科是這樣定義的:
對應在影象上就是:
前提:如果一幅影象佔有全部可能的灰度級,並且均勻分佈。
結論:該影象具有高對比度和多變的灰度色調。
外觀:影象細節豐富,質量更高。
演演算法:
1.計算灰度級出現的概率情況
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45