1、影象的腐蝕:
就像土壤侵蝕一樣,這個操作會把前景物體的邊界腐蝕掉(但是前景仍然是白色)。
這是怎麼做到的呢?卷積核沿著影象滑動,如果與卷積核對應的原影象的所有畫素值都是1,那麼中心元素就保持原來的畫素值,否則就變為零。
這回產生什麼影響呢?根據卷積核的大小靠近前景的所有畫素都會被腐蝕掉(變為
0),所以前景物體會變小,整幅影象的白色區域會減少。
這對於去除白雜訊很有用,也可以用來斷開兩個連在一塊的物體等。
這裡我們有乙個例子,使用乙個
5x5的卷積核,其中所有的值都是以。讓我們看看他是如何工作的:
[python]view plain
copy
import cv2
import numpy as np
img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)
腐蝕主要就是呼叫cv2.erode(img,kernel,iterations),這個函式的引數是
第乙個引數:img指需要腐蝕的圖
第二個引數:kernel指腐蝕操作的核心,預設是乙個簡單的3x3矩陣,我們也可以利用getstructuringelement()函式指明它的形狀
第三個引數:iterations指的是腐蝕次數,省略是預設為1
2、影象的膨脹
與腐蝕相反,與卷積核對應的原影象的畫素值中只要有乙個是1,中心元素的畫素值就是1。
所以這個操作會增加影象中的白色區域(前景)。一般在去雜訊時先用腐蝕再用膨脹。
因為腐蝕在去掉白雜訊的同時,也會使前景物件變小。所以我們再對他進行膨脹。這時雜訊已經被去除了,不會再回來了,但是前景還在並會增加。
膨脹也可以用來連線兩個分開的物體。
[python]view plain
copy
dilation = cv2.dilate(img,kernel,iterations = 1)
3、影象的開運算
先進性腐蝕再進行膨脹就叫做開運算。就像我們上面介紹的那樣,它被用來去除雜訊。這裡我們用到的函式是cv2.morphologyex()。
[python]view plain
copy
opening = cv2.morphologyex(img, cv2.morph_open, kernel)
4、影象的閉運算
先膨脹再腐蝕。它經常被用來填充前景物體中的小洞,或者前景物體上的小黑點。
[python]view plain
copy
closing = cv2.morphologyex(img, cv2.morph_close, kernel)
腐女的生日
腐女要過生日了,pty 想給腐女送禮物,但是腐女所在的教室離pty 的教室太遠了,於是pty就拜託會動歸和a星的djy幫忙送禮物。djy在學校建立了乙個平面直角座標系,他站在了 0,0 點,腐女在 x0,y0 點,djy每次只能往上下左右四個方向移動一步,中間有n棟矩形教學樓,每個教學樓給出兩個對角...
5049 腐女的生日
給定 n 個平面座標系上的矩形,保證矩形不會相交且每個矩形周圍至少乙個單位不會有矩形,求從 0 0 走到 x0,y0 且不經過矩形內部的點的最短曼哈頓距離。data constraint n 105,x 0 0 首先注意到,除了一種情況以外,其他情況都存在一種最優解不需要往右走,那麼 x 方向的代價...
更換ROS中的OpenCV python版本
ros kinetic中預設安裝的是opencv 3.3.1 dev版本,而且ros的python環境預設只有2.7版本,通過pip安裝了別的版本的opencv後ros還是會最先呼叫預設的3.3.1,所以需要先解除安裝該版本 sudo easy install trash cli sudo tras...