日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【学习笔记】opencv的python接口 形态学操作 腐蚀 膨胀 通用形态学函数

發布時間:2024/9/30 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【学习笔记】opencv的python接口 形态学操作 腐蚀 膨胀 通用形态学函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

腐蝕

img=np.zeros((5,5),np.uint8) img[1:4,1:4]=1 kernel=np.ones((3,1),np.uint8) erosion=cv2.erode(img,kernel) print("img=\n",img) print("kernel=\n",kernel) print("erosion=\n",erosion)

img=
[[0 0 0 0 0]
[0 1 1 1 0]
[0 1 1 1 0]
[0 1 1 1 0]
[0 0 0 0 0]]
kernel=
[[1]
[1]
[1]]
erosion=
[[0 0 0 0 0]
[0 0 0 0 0]
[0 1 1 1 0]
[0 0 0 0 0]
[0 0 0 0 0]]

img = cv2.imread("erode.png") #img2 = cv2.medianBlur(img,5) kernel = np.ones((2,2),np.uint8) img2 = cv2.erode(img,kernel,iterations=5) #cv2.imshow("i",img2) cv2.imshow("i1",img)

iterations=5:迭代五次

迭代次數為1時:

毛刺還沒有腐蝕掉。

膨脹

膨脹操作是形態學中另外一種基本的操作。膨脹操作和腐蝕操作的作用是相反的,膨脹操作能對圖像的邊界進行擴張。膨脹操作將與當前對象(前景)接觸到的背景點合并到當前對象內,從而實現將圖像的邊界點向外擴張。如果圖像內兩個對象的距離較近,那么在膨脹的過程中,兩個對象可能會連通在一起。膨脹操作對填補圖像分割后圖像內所存在的空白相當有幫助。
只要當核kernel的任意一點處于前景圖像中時,就將當前中心點所對應的膨脹結果圖像內像素點的值置為1。

開運算

先腐蝕,再膨脹,可以用于去噪 計數

img = cv2.imread("erode.png") #img2 = cv2.medianBlur(img,5) kernel = np.ones((3,3),np.uint8) r1 = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel) cv2.imshow("i",r1) cv2.imshow("i1",img) cv2.waitKey()

閉運算

閉運算是先膨脹、后腐蝕的運算,它有助于關閉前景物體內部的小孔,或去除物體上的小黑點,還可以將不同的前景圖像進行連接。
closing=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

形態學梯度運算

形態學梯度運算是用圖像的膨脹圖像減腐蝕圖像的操作,該操作可以獲取原始圖像中前景圖像的邊緣。 形態學梯度運算使用膨脹圖像(擴張亮度)減腐蝕圖像(收縮亮度),得到原始圖像中前景對象的邊緣。

img = cv2.imread("erode.png") #img2 = cv2.medianBlur(img,5) kernel = np.ones((5,5),np.uint8) r1 = cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel) cv2.imshow("i",r1) cv2.imshow("i1",img)cv2.waitKey()

禮帽運算

可獲取圖像噪聲信息

img = cv2.imread("erode.png") #img2 = cv2.medianBlur(img,5) kernel = np.ones((5,5),np.uint8) r1 = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel) cv2.imshow("i",r1) cv2.imshow("i1",img)

核函數

例使用函數cv2.getStructuringElement()生成不同結構的核。 根據題目要求,編寫程序如下:

kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT,(5, 5)) kernel2 = cv2.getStructuringElement(cv2.MORPH_CROSS,(5, 5)) kernel3 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5, 5))print("kernel1=\n", kernel1) print("kernel2=\n", kernel2) print("kernel3=\n", kernel3)

kernel1=
[[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]]
kernel2=
[[0 0 1 0 0]
[0 0 1 0 0]
[1 1 1 1 1]
[0 0 1 0 0]
[0 0 1 0 0]]
kernel3=
[[0 0 1 0 0]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[0 0 1 0 0]]
用不同的核做膨脹運算:

r1 = cv2.dilate(img,kernel1)

總結

以上是生活随笔為你收集整理的【学习笔记】opencv的python接口 形态学操作 腐蚀 膨胀 通用形态学函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。