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

OpenCV 形態(tài)學變換的實現(xiàn)示例

 更新時間:2025年07月09日 09:53:47   作者:PyAIExplorer  
本文主要介紹了使用OpenCV進行常見的形態(tài)學變換操作,這些操作在圖像預處理、特征提取等任務中非常有用,具有一定的參考價值,感興趣的可以了解一下

一、引言

在計算機視覺領域,形態(tài)學變換是一種基于圖像形狀的簡單操作,常用于圖像預處理、特征提取等任務。OpenCV 作為一個強大的計算機視覺庫,提供了豐富的形態(tài)學變換函數(shù)。本文將詳細介紹 OpenCV 中常見的形態(tài)學變換操作,并通過 Python 代碼展示如何對一張貓咪圖像進行這些操作。

二、環(huán)境準備

在運行代碼之前,你需要安裝 OpenCV 庫。可以使用以下命令進行安裝:

pip install opencv-python

三、代碼實現(xiàn)

1. 導入必要的庫

import cv2
import numpy as np

2. 腐蝕操作

腐蝕操作會使圖像中的前景物體變小,通常用于去除小的噪聲點。

二值圖腐蝕后白色像素(非0)變少了。

# 腐蝕
def test001():
    img = cv2.imread("./opencv_work/src/cat.jpg", cv2.IMREAD_GRAYSCALE)
    kernel = np.ones((3, 3), np.uint8)
    # img_erode=cv2.erode(img,kernel=kernel,iterations=2)
    img_erode = cv2.erode(img, kernel=kernel)
    img_erode = cv2.erode(img_erode, kernel=kernel)
    cv2.imshow("img", img)
    cv2.imshow("img_erode", img_erode)
    cv2.waitKey(0)

3. 膨脹操作

膨脹操作會使圖像中的前景物體變大,通常用于連接斷裂的物體。

二值圖膨脹后白色像素變多了。

# 膨脹
def test002():
    img = cv2.imread("./opencv_work/src/cat.jpg", cv2.IMREAD_GRAYSCALE)
    kernel = np.ones((3, 3), np.uint8)
    img_dilate = cv2.dilate(img, kernel=kernel, iterations=2)
    cv2.imshow("img", img)
    cv2.imshow("img_dilate", img_dilate)
    cv2.waitKey(0)

4. 開運算

開運算先進行腐蝕操作,再進行膨脹操作,常用于去除小的前景物體。

# 開運算:先腐蝕后膨脹
def test003():
    img = cv2.imread("./opencv_work/src/cat.jpg", cv2.IMREAD_GRAYSCALE)
    kernel = np.ones((3, 3), np.uint8)
    img_open = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel=kernel)
    cv2.imshow("img", img)
    cv2.imshow("img_open", img_open)
    cv2.waitKey(0)

5. 閉運算

閉運算先進行膨脹操作,再進行腐蝕操作,常用于填充前景物體內部的小孔。

# 閉運算:先膨脹后腐蝕
def test004():
    img = cv2.imread("./opencv_work/src/cat.jpg", cv2.IMREAD_GRAYSCALE)
    kernel = np.ones((3, 3), np.uint8)
    img_close = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel=kernel)
    cv2.imshow("img", img)
    cv2.imshow("img_close", img_close)
    cv2.waitKey(0)

6. 禮帽操作

禮帽操作是原始圖像與開運算結果之差,常用于突出圖像中的噪聲點。

# 禮帽:原始圖像與開運算之差
def test005():
    img = cv2.imread("./opencv_work/src/cat.jpg", cv2.IMREAD_GRAYSCALE)
    kernel = np.ones((3, 3), np.uint8)
    img_tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel=kernel)
    cv2.imshow("img", img)
    cv2.imshow("img_tophat", img_tophat)
    cv2.waitKey(0)

7. 黑帽操作

黑帽操作是閉運算結果與原始圖像之差,常用于突出圖像中的小孔。

# 黑帽:閉運算與原始圖像之差
def test006():
    img = cv2.imread("./opencv_work/src/cat.jpg", cv2.IMREAD_GRAYSCALE)
    kernel = np.ones((3, 3), np.uint8)
    img_blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel=kernel)
    cv2.imshow("img", img)
    cv2.imshow("img_blackhat", img_blackhat)
    cv2.waitKey(0)

8. 形態(tài)學梯度操作

形態(tài)學梯度操作是膨脹結果與腐蝕結果之差,常用于突出圖像的邊緣。

# 形態(tài)學梯度:膨脹與腐蝕之差
def test007():
    img = cv2.imread("./opencv_work/src/cat.jpg", cv2.IMREAD_GRAYSCALE)
    kernel = np.ones((3, 3), np.uint8)
    img2 = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
    cv2.imshow("img", img)
    cv2.imshow("img2", img2)
    cv2.waitKey(0)

9. 主函數(shù)調用

if __name__ == '__main__':
    # test001()
    # test002()
    # test003()
    # test004()
    # test005()
    # test006()
    test007()

四、代碼解釋

  • 導入庫:導入了 cv2 和 numpy 庫,cv2 用于圖像處理,numpy 用于創(chuàng)建核。
  • 讀取圖像:使用 cv2.imread 函數(shù)讀取貓咪圖像,并將其轉換為灰度圖像。
  • 創(chuàng)建核:使用 np.ones 函數(shù)創(chuàng)建一個 3x3 的核,用于形態(tài)學變換。
  • 形態(tài)學變換:使用 cv2.erode、cv2.dilate 和 cv2.morphologyEx 函數(shù)進行不同的形態(tài)學變換。
  • 顯示圖像:使用 cv2.imshow 函數(shù)顯示原始圖像和變換后的圖像。
  • 等待按鍵:使用 cv2.waitKey 函數(shù)等待用戶按下任意鍵關閉窗口。

五、總結

通過本文的介紹,你學會了如何使用 OpenCV 進行常見的形態(tài)學變換操作。這些操作在圖像預處理、特征提取等任務中非常有用。你可以根據(jù)自己的需求選擇合適的形態(tài)學變換操作,對圖像進行處理。

到此這篇關于OpenCV 形態(tài)學變換的實現(xiàn)示例的文章就介紹到這了,更多相關OpenCV 形態(tài)學變換內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python去除空格和換行符的實現(xiàn)方法(推薦)

    python去除空格和換行符的實現(xiàn)方法(推薦)

    下面小編就為大家?guī)硪黄猵ython去除空格和換行符的實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • python入門課程第二講之怎么運行Python

    python入門課程第二講之怎么運行Python

    這篇文章主要介紹了python入門課程第二講之怎么運行Python,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Python中BaseHTTPRequestHandler實現(xiàn)簡單的API接口

    Python中BaseHTTPRequestHandler實現(xiàn)簡單的API接口

    本文主要介紹了Python中BaseHTTPRequestHandler實現(xiàn)簡單的API接口,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • pytorch中交叉熵損失(nn.CrossEntropyLoss())的計算過程詳解

    pytorch中交叉熵損失(nn.CrossEntropyLoss())的計算過程詳解

    今天小編就為大家分享一篇pytorch中交叉熵損失(nn.CrossEntropyLoss())的計算過程詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python數(shù)組復制拷貝的實現(xiàn)方法

    python數(shù)組復制拷貝的實現(xiàn)方法

    這篇文章主要介紹了python數(shù)組復制拷貝的實現(xiàn)方法,實例分析了Python數(shù)組傳地址與傳值兩種復制拷貝的使用技巧,需要的朋友可以參考下
    2015-06-06
  • Python進程間通信Queue消息隊列用法分析

    Python進程間通信Queue消息隊列用法分析

    這篇文章主要介紹了Python進程間通信Queue消息隊列用法,結合實例形式分析了基于Queue的進程間通信相關操作技巧與使用注意事項,需要的朋友可以參考下
    2019-05-05
  • Python實現(xiàn)k-means算法

    Python實現(xiàn)k-means算法

    這篇文章主要為大家詳細介紹了Python實現(xiàn)k-means算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python中復數(shù)的共軛復數(shù)知識點總結

    python中復數(shù)的共軛復數(shù)知識點總結

    在本篇內容里小編給大家整理的是關于python中復數(shù)的共軛復數(shù)知識點總結,有需要的朋友們可以學習下。
    2020-12-12
  • Python編程mac下使用pycharm小技巧

    Python編程mac下使用pycharm小技巧

    這篇文章主要介紹了Python編程中在mac下使用pycharm的一些小技巧,建議正在使用Pycharm的同學們可以收藏閱讀,可以節(jié)省你的編程時間
    2021-09-09
  • selenium攜帶cookies模擬登陸CSDN的實現(xiàn)

    selenium攜帶cookies模擬登陸CSDN的實現(xiàn)

    這篇文章主要介紹了selenium攜帶cookies模擬登陸CSDN的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論