最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python OpenCV學(xué)習(xí)之圖像形態(tài)學(xué)

 更新時間:2022年01月12日 10:06:30   作者:一個熱愛學(xué)習(xí)的深度渣渣  
形態(tài)學(xué)處理方法是基于對二進制圖像進行處理的,卷積核決定圖像處理后的效果。本文將為大家詳細介紹一下OpenCV中的圖像形態(tài)學(xué),感興趣的可以了解一下

背景

形態(tài)學(xué)處理方法是基于對二進制圖像進行處理的,卷積核決定圖像處理后的效果;形態(tài)學(xué)的處理哦本質(zhì)上相當于對圖像做前處理,提取出有用的特征,以便后續(xù)的目標識別等任務(wù);

一、圖像二值化

定義:將圖像的每個像素變成兩種值,如0和255;

全局二值化的函數(shù)原型:

threshold(img,thresh,maxVal,type)

  • img:最好是灰度圖像
  • thresh:閾值
  • maxVal:超過閾值,替換為maxVal
  • type:有幾種類型,THRESH_BINARY為二值化的類型

案例代碼:

img = cv2.imread('1.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, dst = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)
cv2.imshow('org', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

關(guān)于type類型,可查看下圖:

二、自適應(yīng)閾值

解決的問題:由于光照不均勻以及陰影的存在,只有一個閾值會使得在陰影處的白色被二值化成黑色;

若采用全局二值化,在有陰影的圖片中,陰影信息會丟失,如下圖:

當閾值設(shè)置較高時,會出現(xiàn)部分陰影信息丟失,如果需要不斷嘗試找到合適閾值是一件耗時的事情,因此就有了自適應(yīng)閾值的方法;

自適應(yīng)閾值函數(shù)原型:

adaptiveThreshold(img,maxVal,adaptiveMethod,,type,blockSize, C)

  • adaptiveMethod:計算閾值的方法;
  • blockSize:鄰近區(qū)域的大小;
  • C:常量,應(yīng)從計算出的平均值或加權(quán)平均值中減去,一般設(shè)置為0;

計算閾值主要有兩種兩種方法:

① ADAPTIVE_THRESH_MEAN_C:計算鄰近區(qū)域的平均值;(根據(jù)blockSize大小做平均濾波)

② ADAPTIVE_THRESH_GAUSSIAN_C:高斯窗口加權(quán)平均值;(根據(jù)blockSize大小做高斯濾波)

代碼案例:

img = cv2.imread('new.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

dst = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 0)
cv2.imshow('org', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

可以看出,雖然信息成功提取出來,但背景的噪點過多,后續(xù)會加以處理;

三、腐蝕

本質(zhì)卷積核的值全為1,可通過下圖簡單理解其原理:

函數(shù)原型:

erode(img,kernel,iterations=1)

iterations:執(zhí)行的次數(shù);

代碼案例:

img = cv2.imread('./j.png')
kernel = np.ones((3, 3), np.uint8)

dst = cv2.erode(img, kernel, 1)
cv2.imshow('org', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

上圖為腐蝕后的結(jié)果,明顯白色區(qū)域變小了,如果增大卷積核或增加腐蝕次數(shù)會使得腐蝕效果更明顯;

四、卷積核獲取

函數(shù)原型:

getStructuringElement(type,size)

size一般設(shè)置成(3,3)或(5,5)這樣;

type類型:

MORPH_RECT:矩形形狀的卷積核;

MORPH_ELLIPSE:橢圓形狀卷積核;

MORPH_CROSS:十字架形狀卷積核;

腐蝕中的全為1的卷積核可以通過這個函數(shù)構(gòu)造:

kernrl = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))

相比于用numpy構(gòu)造更好;

五、膨脹

膨脹和腐蝕相反,其原理是卷積核中間不為0,則整個卷積核區(qū)域的值都為1,如下圖:

函數(shù)原型:

dilate(img,kernel,iterations=1)

代碼案例:

img = cv2.imread('./j.png')
kernel = np.ones((7, 7), np.uint8)

dst = cv2.dilate(img, kernel, 1)
cv2.imshow('org', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

本次采用7x7的卷積核,所以效果會比較明顯一些;

六、開運算

本質(zhì):先腐蝕,后膨脹;

函數(shù)原型:

morphologyEx(img,cv2.MORPH_OPEN,kernel)

代碼案例:

img = cv2.imread('./dotj.png')
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))

dst = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

cv2.imshow('org', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

從圖中可看出,開運算很好的解決了小的噪點,也就是背景噪點去除;

七、閉運算

本質(zhì):先膨脹,后腐蝕;

函數(shù)原型等同于開運算,其中的類型進行修改即可;

代碼案例:

img = cv2.imread('./dotinj.png')
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))

dst = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

cv2.imshow('org', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

中間還是有一些噪點沒有完全消除,可以調(diào)整卷積核大小,將卷積核調(diào)大,可以得到更好的效果;

八、形態(tài)學(xué)梯度

本質(zhì):梯度 = 原圖 - 腐蝕

函數(shù)還是morphologyEx,其中類型為MORPH_GRADIENT;

代碼案例:

img = cv2.imread('./j.png')
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))

dst = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

cv2.imshow('org', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

可以看出來腐蝕的部分,也相當于提取了邊緣;

九、頂帽運算

本質(zhì):頂帽 = 原圖 - 開運算

函數(shù)還是morphologyEx,其中類型為MORPH_TOPHAT;

代碼案例:

img = cv2.imread('./tophat.png')
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (19, 19))

dst = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

cv2.imshow('org', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

十、黑帽運算

本質(zhì):黑帽 = 原圖 - 閉運算

函數(shù)還是morphologyEx,其中類型為MORPH_BLACKHAT;

代碼案例:

img = cv2.imread('./dotinj.png')
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))

dst = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

cv2.imshow('org', img)
cv2.imshow('dst', dst)
cv2.waitKey(0)

總結(jié)

開運算:先腐蝕再膨脹,去除大圖形外的小圖形;

閉運算:先膨脹再腐蝕,去除大圖形內(nèi)的小圖形;

梯度:求圖形的邊緣;

頂帽:原圖減開運算,得到大圖形外的小圖形;

黑帽:原圖減閉運算,得到大圖形內(nèi)的小圖形;

以上就是Python OpenCV學(xué)習(xí)之圖像形態(tài)學(xué)的詳細內(nèi)容,更多關(guān)于Python OpenCV圖像形態(tài)學(xué)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python循環(huán)緩沖區(qū)的應(yīng)用詳解

    Python循環(huán)緩沖區(qū)的應(yīng)用詳解

    循環(huán)緩沖區(qū)是一個線性緩沖區(qū),邏輯上被視為一個循環(huán)的結(jié)構(gòu),本文主要為大家介紹了Python中循環(huán)緩沖區(qū)的相關(guān)應(yīng)用,有興趣的小伙伴可以了解一下
    2025-03-03
  • Pytorch之contiguous的用法

    Pytorch之contiguous的用法

    今天小編就為大家分享一篇Pytorch之contiguous的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • pytest解讀fixtures之Teardown處理yield和addfinalizer方案

    pytest解讀fixtures之Teardown處理yield和addfinalizer方案

    這篇文章主要為大家介紹了pytest解讀fixtures之Teardown處理yield和addfinalizer的方案實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 基于Python編寫一個自動化監(jiān)控與響應(yīng)工具

    基于Python編寫一個自動化監(jiān)控與響應(yīng)工具

    隨著二手交易平臺如閑魚的活躍度不斷上升,許多用戶希望能夠更高效地獲取平臺上發(fā)布的特定商品,本文將以Python 為主語言開發(fā)一套自動化監(jiān)控與響應(yīng)工具,感興趣的小伙伴可以了解下
    2026-03-03
  • 簡析Python的閉包和裝飾器

    簡析Python的閉包和裝飾器

    這篇文章主要為大家詳細介紹了Python的閉包和裝飾器,何為閉包?何為裝飾器?感興趣的小伙伴們可以參考一下
    2016-02-02
  • matplotlib圖例legend語法及設(shè)置的方法

    matplotlib圖例legend語法及設(shè)置的方法

    這篇文章主要介紹了matplotlib圖例legend語法及設(shè)置的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Python數(shù)據(jù)結(jié)構(gòu)與算法之常見的分配排序法示例【桶排序與基數(shù)排序】

    Python數(shù)據(jù)結(jié)構(gòu)與算法之常見的分配排序法示例【桶排序與基數(shù)排序】

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之常見的分配排序法,結(jié)合實例形式分析了桶排序與基數(shù)排序的相關(guān)原理及實現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • python爬蟲通過增加多線程獲取數(shù)據(jù)

    python爬蟲通過增加多線程獲取數(shù)據(jù)

    這篇文章主要為大家介紹了python爬蟲通過增加多線程獲取數(shù)據(jù)實現(xiàn)過程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • python掃描線填充算法詳解

    python掃描線填充算法詳解

    這篇文章主要為大家詳細介紹了python掃描線填充算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • python3 反射的四種基本方法解析

    python3 反射的四種基本方法解析

    這篇文章主要介紹了python3 反射的四種基本方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08

最新評論

晋宁县| 荃湾区| 门头沟区| 武乡县| 随州市| 勃利县| 唐河县| 盐池县| 如皋市| 正阳县| 怀集县| 洛南县| 白城市| 拜泉县| 邢台县| 石台县| 大宁县| 麦盖提县| 堆龙德庆县| 华宁县| 德保县| 平南县| 全椒县| 泊头市| 大姚县| 泗阳县| 陇南市| 巫溪县| 博湖县| 温泉县| 河南省| 五峰| 三亚市| 麻阳| 邵阳市| 凌源市| 漯河市| 平昌县| 普陀区| 沅陵县| 渝北区|