欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OpenCV學(xué)習(xí)之圖像形態(tài)學(xué)處理詳解

 更新時(shí)間:2023年02月15日 15:19:25   作者:雙子座斷點(diǎn)  
這篇文章主要為大家詳細(xì)介紹了OpenCV中圖像形態(tài)學(xué)處理的相關(guān)知識(shí),例如:腐蝕操作、膨脹操作、開閉運(yùn)算、梯度運(yùn)算、Top Hat Black Hat運(yùn)算等操作,需要的可以參考一下

本文是OpenCV圖像視覺入門之路的第11篇文章,本文詳細(xì)的在圖像形態(tài)學(xué)進(jìn)行了圖像處理,例如:腐蝕操作、膨脹操作、開閉運(yùn)算、梯度運(yùn)算、Top Hat Black Hat運(yùn)算等操作。

1.腐蝕操作

從下面代碼中可以看到有三幅腐蝕程度不同的圖,腐蝕越嚴(yán)重像素就越模糊

import cv2
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
    kernel = np.ones((3, 3), np.uint8)
    erosion = cv2.erode(img1, kernel)
    cv2.imshow("img1", erosion)  # 顯示疊加圖像 dst
 
    img2 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
    kernel = np.ones((10, 10), np.uint8)
    erosion_1 = cv2.erode(img2, kernel)
    cv2.imshow('erosion_1', erosion_1)
 
    img3 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
    kernel = np.ones((30, 30), np.uint8)
    erosion_2 = cv2.erode(img3, kernel)
    cv2.imshow('erosion_2', erosion_2)
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

binary_img = np.array([ [0, 0, 0, 0, 0],
                        [0,255,255,255,0],
                        [0,255,255,255,0],
                        [0,255,255,255,0],
                        [0, 0, 0, 0, 0]],np.uint8)
ones((3,3),np.uint8)
 
[[  0   0   0   0   0]
 [  0   0   0   0   0]
 [  0   0 255   0   0]
 [  0   0   0   0   0]
 [  0   0   0   0   0]]

通過(guò)上面的例子發(fā)現(xiàn),經(jīng)過(guò)3x3的kernel之后,最終只保留了中心的255像素,周邊的255都變成了0。在進(jìn)行腐蝕操作的時(shí)候,就是通過(guò)kernel大小的卷積在原圖像上滑動(dòng),只有當(dāng)kernel范圍內(nèi)的像素全為255時(shí)輸出才為255,否則輸出為0,所以kernel越大最終白色像素保留的會(huì)越少。

2.膨脹操作

圖像經(jīng)過(guò)膨脹之后,白色像素的范圍變大了。在做膨脹的時(shí)候,只要當(dāng)kernel范圍內(nèi)的像素有255時(shí)輸出就為255。

3.開閉運(yùn)算

開運(yùn)算其實(shí)就是先通過(guò)腐蝕操作后面再進(jìn)行膨脹,閉運(yùn)算和開運(yùn)算恰好相反先通過(guò)膨脹操作后面再進(jìn)行腐蝕。

import cv2
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
    # 定義kernel
    kernel = np.ones((3, 3), np.uint8)
    # 開運(yùn)算
    open_img = cv2.morphologyEx(img1, cv2.MORPH_OPEN, kernel)
    # 閉運(yùn)算
    close_img = cv2.morphologyEx(img1, cv2.MORPH_CLOSE, kernel)
 
 
    cv2.imshow("open_img", open_img)  # 顯示疊加圖像 dst
    cv2.imshow("close_img", close_img)  # 顯示疊加圖像 dst
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

4.梯度運(yùn)算

梯度運(yùn)算等價(jià)于膨脹運(yùn)算-腐蝕運(yùn)算 梯度運(yùn)算主要是用來(lái)保留圖像的輪廓

5.Top Hat Black Hat運(yùn)算

Top Hat運(yùn)算等價(jià)于原始圖像 - 開運(yùn)算,Black Hat運(yùn)算等價(jià)于閉運(yùn)算 - 原始圖像

形態(tài)學(xué)Top-Hat變換是指形態(tài)學(xué)頂帽操作與黑帽操作,前者是計(jì)算源圖像與開運(yùn)算結(jié)果圖之差,后者是計(jì)算閉運(yùn)算結(jié)果與源圖像之差。

形態(tài)學(xué)Top-Hat變換是常用的一種濾波手段,具有高通濾波的某部分特性,可實(shí)現(xiàn)在圖像中檢測(cè)出周圍背景亮結(jié)構(gòu)或周邊背景暗結(jié)構(gòu)。

頂帽操作常用于檢測(cè)圖像中的峰結(jié)構(gòu)。

黑帽操作常用于檢測(cè)圖像中的波谷結(jié)構(gòu)。

import cv2
import numpy as np
from numpy import unicode
 
if __name__ == '__main__':
    img1 = cv2.imread("D:/Jupyter_Notebooks/0.jpg")  # 讀取彩色圖像(BGR)
    # 定義kernel
    kernel = np.ones((3, 3), np.uint8)
    tophat_img = cv2.morphologyEx(img1, cv2.MORPH_TOPHAT, kernel)
    blackhat_img = cv2.morphologyEx(img1, cv2.MORPH_BLACKHAT, kernel)
 
 
    cv2.imshow("tophat_img", tophat_img)  # 顯示疊加圖像 dst
    cv2.imshow("blackhat_img", blackhat_img)  # 顯示疊加圖像 dst
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

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

相關(guān)文章

  • Java Unsafe類實(shí)現(xiàn)原理及測(cè)試代碼

    Java Unsafe類實(shí)現(xiàn)原理及測(cè)試代碼

    這篇文章主要介紹了Java Unsafe類實(shí)現(xiàn)原理及測(cè)試代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 深入了解python的tkinter實(shí)現(xiàn)簡(jiǎn)單登錄

    深入了解python的tkinter實(shí)現(xiàn)簡(jiǎn)單登錄

    這篇文章主要為大家介紹了python的tkinter實(shí)現(xiàn)簡(jiǎn)單登錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • Python編程中非常重要卻又被嚴(yán)重低估的庫(kù)decorator

    Python編程中非常重要卻又被嚴(yán)重低估的庫(kù)decorator

    今天介紹的是一個(gè)已經(jīng)存在十年,但是依舊不紅的庫(kù) decorator,好像很少有人知道他的存在一樣。本篇文章不會(huì)過(guò)多的向你介紹裝飾器的基本知識(shí),我會(huì)默認(rèn)你知道什么是裝飾器,并且懂得如何寫一個(gè)簡(jiǎn)單的裝飾器
    2021-10-10
  • 詳解如何修改python中字典的鍵和值

    詳解如何修改python中字典的鍵和值

    這篇文章主要介紹了詳解如何修改python中字典的鍵和值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 使用Python和Pillow實(shí)現(xiàn)圖片馬賽克功能

    使用Python和Pillow實(shí)現(xiàn)圖片馬賽克功能

    在這篇博客中,我們將探討如何使用Python創(chuàng)建一個(gè)簡(jiǎn)單而有趣的桌面應(yīng)用程序,我們的目標(biāo)是構(gòu)建一個(gè)應(yīng)用,允許用戶選擇一張照片,然后在照片的右下角添加馬賽克效果,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2024-08-08
  • Python中跳出循環(huán)的兩種方法

    Python中跳出循環(huán)的兩種方法

    在 Python 中,跳出循環(huán)通常指的是使用 break 語(yǔ)句來(lái)結(jié)束一個(gè)循環(huán)結(jié)構(gòu),比如 for 循環(huán)或 while 循環(huán),當(dāng)程序執(zhí)行到 break 語(yǔ)句時(shí),循環(huán)會(huì)立即終止,程序會(huì)繼續(xù)執(zhí)行循環(huán)后面的代碼,本文給大家介紹了Python中跳出循環(huán)的兩種方法,需要的朋友可以參考下
    2024-09-09
  • 利用?Python?開發(fā)一個(gè)?Python?解釋器

    利用?Python?開發(fā)一個(gè)?Python?解釋器

    這篇文章主要介紹了利用?Python?開發(fā)一個(gè)?Python?解釋器,在本文中,我們將設(shè)計(jì)一個(gè)可以執(zhí)行算術(shù)運(yùn)算的解釋器。下面我們大家一起來(lái)看看吧</P><P>
    2022-01-01
  • Python FTP文件定時(shí)自動(dòng)下載實(shí)現(xiàn)過(guò)程解析

    Python FTP文件定時(shí)自動(dòng)下載實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Python FTP文件定時(shí)自動(dòng)下載實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • python實(shí)現(xiàn)輸入三角形邊長(zhǎng)自動(dòng)作圖求面積案例

    python實(shí)現(xiàn)輸入三角形邊長(zhǎng)自動(dòng)作圖求面積案例

    這篇文章主要介紹了python實(shí)現(xiàn)輸入三角形邊長(zhǎng)自動(dòng)作圖求面積案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python+Pytest實(shí)現(xiàn)壓力測(cè)試詳解

    Python+Pytest實(shí)現(xiàn)壓力測(cè)試詳解

    在現(xiàn)代Web應(yīng)用程序中,性能是至關(guān)重要的。為了確保應(yīng)用程序能夠在高負(fù)載下正常運(yùn)行,我們需要進(jìn)行性能測(cè)試。本文就來(lái)用Pytest進(jìn)行壓力測(cè)試,希望對(duì)大家有所幫助
    2023-03-03

最新評(píng)論