一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

2022-02-28 13:04Swayzzu Python

這篇文章主要為大家介紹了python計算機(jī)視覺opencv圖像金字塔圖像輪廓及模板匹配的學(xué)習(xí)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

1.圖像金字塔

①高斯金字塔

向下采樣,數(shù)據(jù)會越來越少,減少的方式是:將偶數(shù)行和列刪除

向上采樣,數(shù)據(jù)會越來越多,將圖像在每個方向上擴(kuò)大為原來的兩倍,新增的行和列用0來填充。使用先前同樣的內(nèi)核與放大后的圖像卷積,獲得近似值。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

上采樣之后,圖片會變大。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

下采樣后,圖片會變小。

②拉普拉斯金字塔

對于原始圖像,先執(zhí)行下采樣,再執(zhí)行上采樣,并用原始圖像減去得到的采樣結(jié)果。

以上的計算方式為1層,第二層的計算,把第一層得到的結(jié)果作為原始圖像進(jìn)行計算。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

 

2.圖像輪廓

cv.findContours(img,mode,method)

最常用的mode:

RETR_TREE,檢測所有的輪廓,并重構(gòu)嵌套輪廓的整個層次

最常用的method:

CHAIN_APPROX_NONE:以Freeman鏈碼的方式輸出輪廓,所有其他方法輸出多邊形(頂點的序列)

CHAIN_APPROX_SIMPLE:壓縮水平的、垂直的和斜的部分,也就是函數(shù)只保留他們的終點部分。

①尋找輪廓

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

函數(shù)返回的第一個參數(shù)contours就是我們所需要的輪廓信息。它是一個列表的形式。每一個元素都是數(shù)組形式。一個圖像中可能有多個輪廓,并且會有外輪廓以及內(nèi)輪廓,均可通過返回的contours調(diào)用。

②輪廓特征

通過調(diào)用不同的函數(shù)可以求得輪廓的面積以及周長等。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

③輪廓繪制

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

第一個參數(shù)就是要畫上去的圖,第二個是輪廓信息,第三個是輪廓的索引,第四個是使用的顏色通道,第五個是線條的寬度。

也可以畫出輪廓的邊界矩形或者外接圓:

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

 

3.模板匹配

模板匹配 模板在原圖像上,從原點開始滑動,計算模板與圖像被模板覆蓋的地方的差別程度,這個差別程度在opencv里有6種,然后將每次計算的結(jié)果放在一個矩陣?yán)铮鳛榻Y(jié)果輸出。假如原圖像是AB,模板是ab大小,則輸出結(jié)果是(A-a+1) * (B-b+1)

TM_SQDIFF:平方差異,越小越相關(guān)

TM_CCORR:相關(guān)性,越大越相關(guān)

TM_CCOEFF:相關(guān)系數(shù),越大越相關(guān)

TM_SQDIFF_NORMED:歸一化平方不同,越接近0越相關(guān)

TM_CCORR_NORMED:歸一化相關(guān)性,越接近1越相關(guān)

TM_CCOEFF_NORMED:歸一化相關(guān)系數(shù),越接近1越相關(guān)

建議:盡量使用歸一化的方法

①模板匹配

讀取圖片以及需要匹配的模板,并將其進(jìn)行灰度化處理:

下面得到的h,w就是模板的長和寬

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

通過matchTemplate的方法進(jìn)行匹配:

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

②匹配框線繪制

對于匹配所得的返回值,通過minMaxLoc得到最小值和最大值,以及各自對應(yīng)的坐標(biāo)。根據(jù)選擇的方法不同,所需要的目標(biāo)值不同。比如TM_SQDIFF_NORMED:歸一化平方不同,就是越接近0越相關(guān),即越小越好。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

得到了最佳的值以及坐標(biāo),就可以畫出來矩形框。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

在rectangle方法中,參數(shù)依次是:要畫框的圖片,框的左上角坐標(biāo),框的右下角坐標(biāo),框的亮度,框的線條粗細(xì)。結(jié)果如下:

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

③多對象匹配

模板匹配也可匹配多個對象,若圖片中有多個和模板匹配的內(nèi)容,cv.matchTemplate返回的內(nèi)容中會有多個分?jǐn)?shù)高的結(jié)果,設(shè)定閾值后,把分?jǐn)?shù)高的結(jié)果的坐標(biāo),按同樣的方式處理,把方框全部畫出來即可。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

 

4.直方圖統(tǒng)計

①直方圖繪制

可直接通過plt.hist方法,將圖像矩陣扁平化之后,繪制不同的像素出現(xiàn)的頻率直方圖。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

②直方圖統(tǒng)計

cv2.calcHist(images,channels,mask,histSize,ranges)

參數(shù)中:

imges:傳入的圖像

channels:顏色通道,如果是灰度圖就是[0],如果是彩色可以是[0],[1],[2]。分別對應(yīng)著BGR。

mask:掩膜,如果需要對圖像進(jìn)行掩膜處理可以傳入此參數(shù)。

histSize:就是bin的數(shù)目,可以直接填入[256]

ranges:像素值范圍,常為:[0,256]

注意:傳入?yún)?shù)時,都需要用中括號括起來。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

calcHist返回值是對應(yīng)顏色的統(tǒng)計值。當(dāng)i是0的時候,就是B,1對應(yīng)G,2對應(yīng)R

③直方圖的mask操作

創(chuàng)建mask,此處使用圖片的長寬作為mask的長寬,并把需要展示的地方置為1,其他地方置為0即可。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

通過bitwise_and,即“與”操作,即可實現(xiàn)掩膜操作。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

把Mask應(yīng)用到圖片中,并畫出直方圖:

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

④直方圖均衡化

通過cv.equalizeHist方法,可以對直方圖進(jìn)行均衡化

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

直方圖前后對比如下:

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

對應(yīng)的圖像發(fā)生的變化如下:

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

以上的方式是對全局直接進(jìn)行均衡化。可以看出圖中雕像的臉變得模糊。通過自適應(yīng)直方圖均衡化可解決此問題,自適應(yīng)均衡化是通過將圖片分成不同的小塊,對每一小塊進(jìn)行各自的均衡化。

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

 

5.傅里葉變換

低通濾波是保留低頻,圖像會變得模糊。高通濾波是保留高頻,圖像的細(xì)節(jié)會增強(qiáng)。

在opencv中主要是cv2.dft()和cv2.idft(),輸入圖像需要先轉(zhuǎn)換成np.float32的格式 得到的結(jié)果中,頻率為0的部分會在左上角,通常要轉(zhuǎn)換到中心位置,可以通過shift變換來實現(xiàn) cv2.dft()得到的結(jié)果是雙通道的(實部、虛部),通常還需要轉(zhuǎn)換成圖像格式才能展示(0,255)

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

上圖是將圖片轉(zhuǎn)換到頻域之后,轉(zhuǎn)換成灰度圖并且展示的形式。

在低通濾波中,當(dāng)轉(zhuǎn)換到頻域并把低頻的放到中間后,只需要設(shè)置一個掩膜,即可把圖像高頻濾除掉。然后在通過逆轉(zhuǎn)換,還原圖像即可。具體代碼如下:

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

在高通濾波器中,只需要把上面的代碼中的掩膜轉(zhuǎn)換一下,把0換成1,1換成0即可實現(xiàn)高通濾波。最終的圖片展示如下:

python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配

可以看出,圖片只保留了高頻,也就是變化劇烈的部分,也就是圖像中的邊緣。

以上就是python計算機(jī)視覺opencv圖像金字塔輪廓及模板匹配的詳細(xì)內(nèi)容,更多關(guān)于python opencv圖像金字塔輪廓及模板匹配的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://blog.csdn.net/Swayzzu/article/details/120872759

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国色天香视频资源网 | 女攻双性 | 牛牛在线观看 | 挑色视频| 精品国产精品国产 | 91在线精品国产丝袜超清 | 国产成人啪精品视频站午夜 | 精品网站| 欧美╳bbbb| 国产欧美综合精品一区二区 | 95视频在线观看在线分类h片 | 成年人视频免费在线播放 | 日韩毛片在线影视 | tk白丝丨vk| 欧美一级v片 | 特黄未满14周岁毛片 | 肉色欧美久久久久久久蜜桃 | 狠狠综合视频精品播放 | 精品网站一区二区三区网站 | 国产传媒天美果冻 | 无人区乱码1区2区3区网站 | 久久精品中文騷妇女内射 | 动漫美女日批 | 操碰人人 | 爆操萝莉 | 99视频全部看免费观 | 色yeye在线观视频 | 极品美女穴 | 国产成人精品免费视频大全五级 | 青青青在线视频播放 | 精品一久久香蕉国产线看播放 | juliaann丝袜精品系列 | 国产欧美一区二区精品性色 | 国产成人精品高清免费 | 亚洲2023无矿砖码砖区 | 日本嫩交 | 黑人干我 | 精品视频久久久久 | 色老板在线播放 | 国产a在线 | 精品视频二区 |