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

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

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

一、引言

在計(jì)算機(jī)視覺(jué)領(lǐng)域,形態(tài)學(xué)變換是一種基于圖像形狀的簡(jiǎn)單操作,常用于圖像預(yù)處理、特征提取等任務(wù)。OpenCV 作為一個(gè)強(qiáng)大的計(jì)算機(jī)視覺(jué)庫(kù),提供了豐富的形態(tài)學(xué)變換函數(shù)。本文將詳細(xì)介紹 OpenCV 中常見的形態(tài)學(xué)變換操作,并通過(guò) Python 代碼展示如何對(duì)一張貓咪圖像進(jìn)行這些操作。

二、環(huán)境準(zhǔn)備

在運(yùn)行代碼之前,你需要安裝 OpenCV 庫(kù)??梢允褂靡韵旅钸M(jìn)行安裝:

pip install opencv-python

三、代碼實(shí)現(xiàn)

1. 導(dǎo)入必要的庫(kù)

import cv2
import numpy as np

2. 腐蝕操作

腐蝕操作會(huì)使圖像中的前景物體變小,通常用于去除小的噪聲點(diǎn)。

二值圖腐蝕后白色像素(非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. 膨脹操作

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

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

# 膨脹
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. 開運(yùn)算

開運(yùn)算先進(jìn)行腐蝕操作,再進(jìn)行膨脹操作,常用于去除小的前景物體。

# 開運(yùn)算:先腐蝕后膨脹
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. 閉運(yùn)算

閉運(yùn)算先進(jìn)行膨脹操作,再進(jìn)行腐蝕操作,常用于填充前景物體內(nèi)部的小孔。

# 閉運(yùn)算:先膨脹后腐蝕
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. 禮帽操作

禮帽操作是原始圖像與開運(yùn)算結(jié)果之差,常用于突出圖像中的噪聲點(diǎn)。

# 禮帽:原始圖像與開運(yùn)算之差
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. 黑帽操作

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

# 黑帽:閉運(yùn)算與原始圖像之差
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)學(xué)梯度操作

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

# 形態(tài)學(xué)梯度:膨脹與腐蝕之差
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ù)調(diào)用

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

四、代碼解釋

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

五、總結(jié)

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

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

相關(guān)文章

最新評(píng)論

彝良县| 临夏市| 嘉荫县| 麟游县| 正宁县| 屏东县| 福州市| 章丘市| 百色市| 兰溪市| 寿宁县| 乌海市| 龙州县| 台北市| 梅河口市| 山阴县| 孝感市| 清新县| 景宁| 永定县| 马边| 普格县| 阿坝县| 云梦县| 乡城县| 崇义县| 扶沟县| 上犹县| 太保市| 巍山| 莱芜市| 克什克腾旗| 禹城市| 尤溪县| 喀喇沁旗| 陆川县| 山东| 获嘉县| 万全县| 巩义市| 都昌县|