【学习笔记】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]]
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]]
用不同的核做膨脹運算:
總結
以上是生活随笔為你收集整理的【学习笔记】opencv的python接口 形态学操作 腐蚀 膨胀 通用形态学函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue响应的res.data和res.d
- 下一篇: 【实例】python和opencv构建运