中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中opencv圖像金字塔輪廓及模板匹配是怎樣的

發布時間:2021-11-12 13:37:32 來源:億速云 閱讀:243 作者:柒染 欄目:開發技術

這篇文章給大家介紹python中opencv圖像金字塔輪廓及模板匹配是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

    1.圖像金字塔

    ①高斯金字塔

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

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    下采樣后,圖片會變小。

    ②拉普拉斯金字塔

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

    以上的計算方式為1層,第二層的計算,把第一層得到的結果作為原始圖像進行計算。

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    2.圖像輪廓

    cv.findContours(img,mode,method)

    最常用的mode:

    RETR_TREE,檢測所有的輪廓,并重構嵌套輪廓的整個層次

    最常用的method:

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

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

    ①尋找輪廓

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

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

    ②輪廓特征

    通過調用不同的函數可以求得輪廓的面積以及周長等。

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    ③輪廓繪制

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

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

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    3.模板匹配

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

    TM_SQDIFF:平方差異,越小越相關

    TM_CCORR:相關性,越大越相關

    TM_CCOEFF:相關系數,越大越相關

    TM_SQDIFF_NORMED:歸一化平方不同,越接近0越相關

    TM_CCORR_NORMED:歸一化相關性,越接近1越相關

    TM_CCOEFF_NORMED:歸一化相關系數,越接近1越相關

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

    ①模板匹配

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

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    通過matchTemplate的方法進行匹配:

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    ②匹配框線繪制

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    在rectangle方法中,參數依次是:要畫框的圖片,框的左上角坐標,框的右下角坐標,框的亮度,框的線條粗細。結果如下:

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    ③多對象匹配

    模板匹配也可匹配多個對象,若圖片中有多個和模板匹配的內容,cv.matchTemplate返回的內容中會有多個分數高的結果,設定閾值后,把分數高的結果的坐標,按同樣的方式處理,把方框全部畫出來即可。

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    4.直方圖統計

    ①直方圖繪制

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    ②直方圖統計

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

    參數中:

    imges:傳入的圖像

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

    mask:掩膜,如果需要對圖像進行掩膜處理可以傳入此參數。

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

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

    注意:傳入參數時,都需要用中括號括起來。

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    calcHist返回值是對應顏色的統計值。當i是0的時候,就是B,1對應G,2對應R

    ③直方圖的mask操作

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    通過bitwise_and,即“與”操作,即可實現掩膜操作。

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    把Mask應用到圖片中,并畫出直方圖:

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    ④直方圖均衡化

    通過cv.equalizeHist方法,可以對直方圖進行均衡化

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    直方圖前后對比如下:

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    對應的圖像發生的變化如下:

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

    5.傅里葉變換

    低通濾波是保留低頻,圖像會變得模糊。高通濾波是保留高頻,圖像的細節會增強。

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

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

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

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

    python中opencv圖像金字塔輪廓及模板匹配是怎樣的

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

    關于python中opencv圖像金字塔輪廓及模板匹配是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    兴城市| 黔西县| 九龙城区| 衡阳县| 那坡县| 湖北省| 江城| 师宗县| 龙井市| 道真| 朝阳县| 兴隆县| 临安市| 和平县| 仁寿县| 旬阳县| 连南| 申扎县| 云阳县| 荣成市| 诸城市| 凌海市| 渭源县| 阳春市| 海伦市| 大名县| 岳阳县| 阳信县| 化隆| 仲巴县| 滕州市| 林甸县| 蓬安县| 寻乌县| 伊吾县| 泰顺县| 灵川县| 汶川县| 东城区| 门源| 毕节市|