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

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

 更新時(shí)間:2025年07月09日 09:53:47   作者:PyAIExplorer  
本文主要介紹了使用OpenCV進(jìn)行常見(jià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 中常見(jiàn)的形態(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. 開(kāi)運(yùn)算

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

# 開(kāi)運(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. 禮帽操作

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

# 禮帽:原始圖像與開(kāi)運(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ù)等待用戶(hù)按下任意鍵關(guān)閉窗口。

五、總結(jié)

通過(guò)本文的介紹,你學(xué)會(huì)了如何使用 OpenCV 進(jìn)行常見(jià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)論

武定县| 镇雄县| 台中县| 河津市| 西乌珠穆沁旗| 永康市| 沂南县| 双柏县| 拜泉县| 汶川县| 玉林市| 天峻县| 怀宁县| 大余县| 江门市| 广安市| 什邡市| 中方县| 德江县| 同心县| 孟连| 保定市| 芒康县| 长葛市| 瑞安市| 图们市| 昌江| 齐河县| 扎鲁特旗| 怀仁县| 柏乡县| 罗城| 惠安县| 新昌县| 中卫市| 那坡县| 宁国市| 若羌县| 连城县| 那曲县| 堆龙德庆县|