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

OpenCV-Python實現(xiàn)通用形態(tài)學(xué)函數(shù)

 更新時間:2021年06月11日 11:15:37   作者:一天一篇Python庫  
本文將結(jié)合實例代碼,介紹OpenCV-Python實現(xiàn)通用形態(tài)學(xué)函數(shù),包含開運算,閉運算等復(fù)雜的形態(tài)學(xué)運算,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

通用形態(tài)學(xué)函數(shù)

上篇博文,我們介紹了形態(tài)學(xué)的基礎(chǔ)腐蝕與膨脹操作,而將腐蝕與膨脹結(jié)合起來進行組合,我們就能實現(xiàn)開運算,閉運算等復(fù)雜的形態(tài)學(xué)運算。

在OpenCV中,它給我們提供的通用形態(tài)學(xué)函數(shù)為cv2.morphologyEx(),其完整定義如下:

def morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None): 

這些參數(shù)基本前面都介紹過,不過有一點需要說明,src原始圖像必須是CV_8U,CV_16U,CV_16S,CV_32F,CV_64F中的一種。

當然,這里面還有一個陌生的參數(shù)就是op,它就是各種形態(tài)學(xué)的類別,具體類別如表所示:

類型 說明 意義 操作
cv2.MORPH_ERODE 腐蝕 腐蝕 erode()
cv2.MORPH_DILATE 膨脹 膨脹 dilate()
cv2.MORPH_OPEN 開運算 先腐蝕后膨脹 dilate(erode())
cv2.MORPH_CLOSE 閉運算 先膨脹后腐蝕 erode(dilate())
cv2.MORPH_GRADIENT 形態(tài)學(xué)梯度運算 膨脹圖減腐蝕圖 dilate()-erode()
cv2.MORPH_TOPHAT 頂帽運算 原始圖像減開運算所得圖像 src-open()
cv2.MORPH_BLACKHAT 黑帽運算 閉運算所得圖像減原始圖像 close()-src
cv2.MORPH_HITMISS 擊中擊不中 前景背景腐蝕運算的交集。僅僅支持CV8UC1二進制圖像 intersection(erode(src),erode(src1))

開運算

如上表所示,開運算是將原圖像腐蝕,再對其進行膨脹操作。主要用于去噪,計數(shù)等。去噪我們已經(jīng)通過上面的腐蝕操作就可以完成,下面我們來實現(xiàn)有趣的計數(shù)操作。

import cv2
import numpy as np

img = cv2.imread("open.jpg",cv2.IMREAD_UNCHANGED)
kernel = np.ones((9,9), np.float32)
result = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel,iterations=5)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,我們能將不同區(qū)域劃分開來,效果如下:

開運算

閉運算

閉運算是先膨脹后腐蝕的運算,它有助于關(guān)閉前景物體內(nèi)部的小孔,或去除物體上的小黑點,還可以將不同的前景圖像進行連接。下面,我們就將上圖進行連接。

import cv2
import numpy as np

img = cv2.imread("close.jpg", cv2.IMREAD_UNCHANGED)
kernel = np.ones((10, 10), np.float32)
result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations=7)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,兩個方塊就連接為一個整體了,效果如下所示:

閉運算

形態(tài)學(xué)梯度運算

形態(tài)學(xué)梯度運算是用圖像膨脹后的圖像減去腐蝕圖像的運算,該操作可以獲取原始圖像中的前景圖像的邊緣。我們還是用上篇膨脹的圖來測試,代碼如下:

import cv2
import numpy as np

img = cv2.imread("8.jpg", cv2.IMREAD_UNCHANGED)
kernel = np.ones((5, 5), np.float32)
result = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel,iterations=2)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,我們的圖像就中空了,效果如下:

形態(tài)學(xué)梯度運算

頂帽運算

頂帽運算是用原始圖像減去其開運算圖像的操作。它能夠獲取圖像的噪聲信息,或者得到比原圖像的邊緣更亮的邊緣信息。也就是獲取上圖中的白色線條,具體代碼如下:

import cv2
import numpy as np

img = cv2.imread("8.jpg", cv2.IMREAD_UNCHANGED)
kernel = np.ones((5, 5), np.float32)
result = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel,iterations=2)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,效果如下:

頂帽運算

黑帽運算

黑帽運算是用閉運算圖像減去原始圖像的操作。它能夠獲取內(nèi)部的小孔,或前景色中的小黑點,亦或者得到比原始圖像的邊緣更暗的邊緣部分。這里,我們用前面的人物圖像,代碼如下:

import cv2
import numpy as np

img = cv2.imread("4.jpg", cv2.IMREAD_UNCHANGED)
kernel = np.ones((5, 5), np.float32)
result = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel,iterations=2)
cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,效果如下:

黑帽運算

結(jié)構(gòu)元函數(shù)

前面我們介紹過,結(jié)構(gòu)元可以自定義,也可以通過cv2.getStructuringElement()函數(shù)生成。這里,我們來看看其完整的定義:

def getStructuringElement(shape, ksize, anchor=None): 

shape:形狀類型,取值如下表:

類型 意義
cv2.MORPH_RECT 矩形結(jié)構(gòu)元,所有元素值為1
cv2.MORPH_CROSS 十字形結(jié)構(gòu)元,對角線元素值為1
cv2.MORPH_ELLIPSE 橢圓形結(jié)構(gòu)元素

ksize:結(jié)構(gòu)元的大小

anchor:結(jié)構(gòu)元的錨點位置,默認值(-1,1),是形狀的中心。只有十字星型的形狀與錨點位置緊密聯(lián)系。在其他情況下,錨點位置僅用于形態(tài)學(xué)運算結(jié)果的調(diào)整。

下面,我們將這三種形狀類型都實現(xiàn)一遍,具體代碼如下:

import cv2

img = cv2.imread("open.jpg", cv2.IMREAD_UNCHANGED)
kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT,(50,50))
kernel2 = cv2.getStructuringElement(cv2.MORPH_CROSS,(50,50))
kernel3 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(50,50))
result1 = cv2.dilate(img,kernel1)
result2 = cv2.dilate(img,kernel2)
result3 = cv2.dilate(img,kernel3)
cv2.imshow("img", img)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
cv2.imshow("result3", result3)
cv2.waitKey()
cv2.destroyAllWindows()

運行之后,效果如下所示:

結(jié)構(gòu)元函數(shù)

到此這篇關(guān)于OpenCV-Python實現(xiàn)通用形態(tài)學(xué)函數(shù)的文章就介紹到這了,更多相關(guān)OpenCV 通用形態(tài)學(xué)函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyCharm 常用快捷鍵和設(shè)置方法

    PyCharm 常用快捷鍵和設(shè)置方法

    下面小編就為大家分享一篇PyCharm 常用快捷鍵和設(shè)置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Python 判斷 有向圖 是否有環(huán)的實例講解

    Python 判斷 有向圖 是否有環(huán)的實例講解

    下面小編就為大家分享一篇Python 判斷 有向圖 是否有環(huán)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Python復(fù)數(shù)屬性和方法運算操作示例

    Python復(fù)數(shù)屬性和方法運算操作示例

    這篇文章主要介紹了Python復(fù)數(shù)屬性和方法運算操作,結(jié)合實例形式分析了Python復(fù)數(shù)運算相關(guān)操作技巧,代碼注釋備有詳盡說明,需要的朋友可以參考下
    2017-07-07
  • Python 序列的方法總結(jié)

    Python 序列的方法總結(jié)

    這篇文章主要介紹了Python 序列的方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • python-opencv獲取二值圖像輪廓及中心點坐標的代碼

    python-opencv獲取二值圖像輪廓及中心點坐標的代碼

    今天小編就為大家分享一篇python-opencv獲取二值圖像輪廓及中心點坐標的代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 如何寫好?Python?的?Lambda?函數(shù)

    如何寫好?Python?的?Lambda?函數(shù)

    這篇文章主要介紹了如何寫好?Python?的?Lambda?函數(shù),Lambda?函數(shù)是?Python?中的匿名函數(shù),下面文章通過介紹Lambda?函數(shù)的相關(guān)內(nèi)容展開文章主題,需要的小伙伴可以參考一下
    2022-03-03
  • Python爬蟲之App爬蟲視頻下載的實現(xiàn)

    Python爬蟲之App爬蟲視頻下載的實現(xiàn)

    這篇文章主要介紹了Python爬蟲之App爬蟲視頻下載的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 深入剖析Python的列表和元組

    深入剖析Python的列表和元組

    這篇文章主要介紹了深入剖析Python的列表和元組,Python有4個內(nèi)建的數(shù)據(jù)結(jié)構(gòu),它們可以統(tǒng)稱為容器,因為它們實際上是一些“東西”組合而成的結(jié)構(gòu),而這些“東西”,可以是數(shù)字、字符甚至列表,或是它們的組合,需要的朋友可以參考下
    2023-07-07
  • Python代碼解決RenderView窗口not found問題

    Python代碼解決RenderView窗口not found問題

    這篇文章主要介紹了Python代碼解決RenderView窗口not found問題,需要的朋友可以參考下
    2016-08-08
  • Python中常見的三種字符串格式化輸出方法小結(jié)

    Python中常見的三種字符串格式化輸出方法小結(jié)

    字符串格式化是編程中一個常見的需求,它可以們將不同類型的數(shù)據(jù)插入到字符串中,在?Python?中,有多種方法可以執(zhí)行字符串格式化,本文為大家介紹了常見的三種方法,希望對大家有所幫助
    2024-02-02

最新評論

定兴县| 曲沃县| 五指山市| 微博| 错那县| 云梦县| 和田市| 阿荣旗| 江达县| 吉隆县| 遵义县| 宣化县| 东至县| 社会| 西乌| 曲阜市| 招远市| 贵州省| 泸定县| 盐池县| 无为县| 册亨县| 德化县| 宜丰县| 新野县| 美姑县| 安吉县| 米易县| 依安县| 武山县| 塔城市| 惠安县| 乾安县| 南汇区| 耒阳市| 南阳市| 阜城县| 沁源县| 吐鲁番市| 仪征市| 四会市|