導航:首頁 > 編程語言 > pythonopencv邊緣

pythonopencv邊緣

發布時間:2023-01-25 18:46:36

A. OpenCV-python系列八:提取圖像輪廓

當你完成圖像分割之後,圖像輪廓檢測往往可以進一步篩選你要的目標,OpenCV中可以使用cv2.findContours來得到輪廓。

補充
再不少場景中,找輪廓的最小外接矩形是基本需求,opencv中minAreaRect得到的是一個帶有旋轉角度信息的rect,可以使用cv2.boxPoints(rect)來將其轉為矩形的四個頂點坐標(浮點類型).你也可以使用cv2.polylines來繪制這樣的輪廓信息

注意findContours參數的變化,在opencv4中,返回值只有contours和hierarchy ,這一點與opencv3中不同。對與輪廓的層級結構,比較難用,雖然可以通過輪廓的層級結構來進行索引你需要的輪廓,不過對於大部分機器視覺應用場景,二值化的結果有時候很難預料,單單通過這種層級關系索引,非常容易出錯。所以,只找最外部結構的 cv2.RETR_EXTERNAL 是不是真香呢?

處理cv2.approxPolyDP()外,你也可以使用cv2.convexHull來求輪廓的近似凸包,其中凸形狀內部--任意兩點連線都在該形狀內部。

clockwise :默認為False,即輪廓為逆時針方向進行排列;
returnPoints :設置為False會返回與凸包上對應的輪廓的點索引值,設置為True,則會返回凸包上的點坐標集,默認為True

對於opencv-python的提取圖像輪廓部分有問題歡迎留言, Have Fun With OpenCV-Python, 下期見。

B. OpenCV-Python系列六:圖像濾波

圖像濾波是一種十分常見的圖像處理手段。通常,你可以認為相鄰位置像素是緊密聯系的,它們共同來顯示對某個物體,圖像濾波則通過運算來排除圖像中和周圍相差大的像素。當然,這並不是絕對的, 有時候你為了評估圖像的質量,也會將這些「特立獨行」的像素作為選取的目標 。無論你採用什麼方法,記住你要的目標就行,有時候你的目標可能是別人的背景。
濾波常常會使得圖像變得模糊(非絕對),那麼,為什麼你需要將一幅清晰的圖像變得模糊呢?下面的例子應該可以解釋。

高斯濾波採用滿足正態分布的核模板,其參數的主要參數是標准差σ,代表核的離散程度,σ值越小,模板中心系數與邊緣系數差越大,平滑的程度越小。
高斯濾波對圖像採集過程中由於不良照明/高溫引起的感測器雜訊信號有較好的效果,消除了圖像中的高頻信號。

由於得到的是一維的Gaussian Kernel,你可以採用下面的方式轉為二維的

為了便於直觀感受高斯濾波的效果,使用Canny運算元來提取輪廓對比,你可以試試在特徵提取前加高斯濾波對比。

補充說明:對於均值濾波,你也可以使用cv2.boxFilter(src, ddepth, ksize[, dst[, anchor[, normalize[, borderType]]]])來實現,需要將normalize設置為True,當設置normalize為False時,實現的是將kernel內像素相加,官方文檔做出的描述為:

中值濾波對圖像中的脈沖型(椒鹽等)雜訊信號處理效果好,當 你的應用場景存在這種顆粒感的雜訊信號時,中值濾波會是一種很好的選擇 。它,選取kernel區域內像素點集的中值最為錨點的像素值,對類似投票機制中的最高分(高灰階點)和最低分(過低灰階點)影響有很好的抑製作用。

如果你的應用涉及到圖像美化,雙邊濾波可以初步達到你的期望,關於雙邊濾波,這里不做展開,由你來探索,其函數參數信息如下。

對於opencv-python的圖像濾波部分有問題歡迎留言, Have Fun With OpenCV-Python, 下期見。

C. OpenCV Python 系列教程4 - OpenCV 圖像處理(上)

學習目標:

OpenCV 中有 150 多種色彩空間轉化的方法,這里只討論兩種:

HSV的色相范圍為[0,179],飽和度范圍為[0,255],值范圍為[0,255]。不同的軟體使用不同的規模。如果要比較 OpenCV 值和它們,你需要標准化這些范圍。

HSV 和 HLV 解釋

運行結果:該段程序的作用是檢測藍色目標,同理可以檢測其他顏色的目標
結果中存在一定的噪音,之後的章節將會去掉它

這是物體跟蹤中最簡單的方法。一旦你學會了等高線的函數,你可以做很多事情,比如找到這個物體的質心,用它來跟蹤這個物體,僅僅通過在相機前移動你的手來畫圖表,還有很多其他有趣的事情。

菜鳥教程 在線 HSV-> BGR 轉換

比如要找出綠色的 HSV 值,可以使用上面的程序,得到的值取一個上下界。如上面的取下界 [H-10, 100, 100],上界 [H+10, 255, 255]
或者使用其他工具如 GIMP

學習目標:

對圖像進行閾值處理,算是一種最簡單的圖像分割方法,基於圖像與背景之間的灰度差異,此項分割是基於像素級的分割

threshold(src, thresh, maxval, type[, dst]) -> retval, dst

計算圖像小區域的閾值。所以我們對同一幅圖像的不同區域得到不同的閾值,這給我們在不同光照下的圖像提供了更好的結果。

三個特殊的輸入參數和一個輸出參數

adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) -> dst

opencv-threshold-python

OpenCV 圖片集

本節原文

學習目標:

OpenCV 提供兩種變換函數: cv2.warpAffine 和 cv2.warpPerspective

cv2.resize() 完成縮放

文檔說明

運行結果

說明 : cv2.INTER_LINEAR 方法比 cv2.INTER_CUBIC 還慢,好像與官方文檔說的不一致? 有待驗證。

速度比較: INTER_CUBIC > INTER_NEAREST > INTER_LINEAR > INTER_AREA > INTER_LANCZOS4

改變圖像的位置,創建一個 np.float32 類型的變換矩陣,

warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) -> dst

運行結果:

旋轉角度( )是通過一個變換矩陣變換的:

OpenCV 提供的是可調旋轉中心的縮放旋轉,這樣你可以在任何你喜歡的位置旋轉。修正後的變換矩陣為

這里

OpenCV 提供了 cv2.getRotationMatrix2D 控制
cv2.getRotationMatrix2D(center, angle, scale) → retval

運行結果

cv2.getAffineTransform(src, dst) → retval

函數關系:
egin{bmatrix} x'_i y'_i end{bmatrix}egin{bmatrix} x'_i y'_i end{bmatrix} =

其中

運行結果:圖上的點便於觀察,兩圖中的紅點是相互對應的

透視變換需要一個 3x3 變換矩陣。轉換之後直線仍然保持筆直,要找到這個變換矩陣,需要輸入圖像上的 4 個點和輸出圖像上的對應點。在這 4 個點中,有 3 個不應該共線。通過 cv2.getPerspectiveTransform 計算得到變換矩陣,得到的矩陣 cv2.warpPerspective 變換得到最終結果。

本節原文

平滑處理(smoothing)也稱模糊處理(bluring),是一種簡單且使用頻率很高的圖像處理方法。平滑處理的用途:常見是用來 減少圖像上的噪點或失真 。在涉及到降低圖像解析度時,平滑處理是很好用的方法。

圖像濾波:盡量保留圖像細節特徵的條件下對目標圖像的雜訊進行抑制,其處理效果的好壞將直接影響到後續圖像處理和分析的有效性和可靠性。

消除圖像中的雜訊成分叫做圖像的平滑化或濾波操作。信號或圖像的能量大部分集中在幅度譜的低頻和中頻段,在高頻段,有用的信息會被雜訊淹沒。因此一個能降低高頻成分幅度的濾波器就能夠減弱雜訊的影響。

濾波的目的:抽出對象的特徵作為圖像識別的特徵模式;為適應圖像處理的要求,消除圖像數字化時混入的雜訊。

濾波處理的要求:不能損壞圖像的輪廓及邊緣等重要信息;圖像清晰視覺效果好。

平滑濾波是低頻增強的空間濾波技術,目的:模糊和消除噪音。

空間域的平滑濾波一般採用簡單平均法,即求鄰近像元點的平均亮度值。鄰域的大小與平滑的效果直接相關,鄰域越大平滑效果越好,但是鄰域過大,平滑也會使邊緣信息的損失的越大,從而使輸出圖像變得模糊。因此需要選擇合適的鄰域。

濾波器:一個包含加權系數的窗口,利用濾波器平滑處理圖像時,把這個窗口放在圖像上,透過這個窗口來看我們得到的圖像。

線性濾波器:用於剔除輸入信號中不想要的頻率或者從許多頻率中選擇一個想要的頻率。
低通濾波器、高通濾波器、帶通濾波器、帶阻濾波器、全通濾波器、陷波濾波器

boxFilter(src, ddepth, ksize[, dst[, anchor[, normalize[, borderType]]]]) -> dst

均值濾波是方框濾波歸一化後的特殊情況。歸一化就是要把處理的量縮放到一個范圍內如 (0,1),以便統一處理和直觀量化。非歸一化的方框濾波用於計算每個像素鄰近內的積分特性,比如密集光流演算法中用到的圖像倒數的協方差矩陣。

運行結果:

均值濾波是典型的線性濾波演算法,主要方法為鄰域平均法,即用一片圖像區域的各個像素的均值來代替原圖像中的各個像素值。一般需要在圖像上對目標像素給出一個模板(內核),該模板包括了其周圍的臨近像素(比如以目標像素為中心的周圍8(3x3-1)個像素,構成一個濾波模板,即 去掉目標像素本身 )。再用模板中的全體像素的平均值來代替原來像素值。即對待處理的當前像素點(x,y),選擇一個模板,該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當前像素點(x,y),作為處理後圖像在該點上的灰度個g(x,y),即個g(x,y)=1/m ∑f(x,y) ,其中m為該模板中包含當前像素在內的像素總個數。

均值濾波本身存在著固有的缺陷,即它不能很好地保護圖像細節,在圖像去噪的同時也破壞了圖像的細節部分,從而使圖像變得模糊,不能很好地去除雜訊點。

cv2.blur(src, ksize[, dst[, anchor[, borderType]]]) → dst

結果:

高斯濾波:線性濾波,可以消除高斯雜訊,廣泛應用於圖像處理的減噪過程。高斯濾波就是對整幅圖像進行加權平均的過程,每一個像素點的值,都由其本身和鄰域內的其他像素值經過 加權平均 後得到。高斯濾波的具體操作是:用一個模板(或稱卷積、掩模)掃描圖像中的每一個像素,用模板確定的鄰域內像素的加權平均灰度值去替代模板中心像素點的值。

高斯濾波有用但是效率不高。

高斯模糊技術生成的圖像,其視覺效果就像是經過一個半透明屏幕在觀察圖像,這與鏡頭焦外成像效果散景以及普通照明陰影中的效果都明顯不同。高斯平滑也用於計算機視覺演算法中的預先處理階段,以增強圖像在不同比例大小下的圖像效果(參見尺度空間表示以及尺度空間實現)。從數學的角度來看,圖像的高斯模糊過程就是圖像與正態分布做卷積。由於正態分布又叫作高斯分布,所以這項技術就叫作高斯模糊。

高斯濾波器是一類根據高斯函數的形狀來選擇權值的線性平滑濾波器。 高斯平滑濾波器對於抑制服從正態分布的雜訊非常有效。

一維零均值高斯函數為: 高斯分布參數 決定了高斯函數的寬度。

高斯雜訊的產生

GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) -> dst

線性濾波容易構造,並且易於從頻率響應的角度來進行分析。

許多情況,使用近鄰像素的非線性濾波會得到更好的結果。比如在雜訊是散粒雜訊而不是高斯雜訊,即圖像偶爾會出現很大值的時候,用高斯濾波器進行圖像模糊時,雜訊像素不會被消除,而是轉化為更為柔和但仍然可見的散粒。

中值濾波(Median filter)是一種典型的非線性濾波技術,基本思想是用像素點鄰域灰度值的中值來代替該像素點的灰度值,該方法在去除脈沖雜訊、椒鹽雜訊『椒鹽雜訊又稱脈沖雜訊,它隨機改變一些像素值,是由圖像感測器,傳輸信道,解碼處理等產生的黑白相間的亮暗點雜訊。椒鹽雜訊往往由圖像切割引起。』的同時又能保留圖像邊緣細節,

中值濾波是基於排序統計理論的一種能有效抑制雜訊的非線性信號處理技術,其基本原理是把數字圖像或數字序列中一點的值用該點的一個鄰域中各點值的中值代替,讓周圍的像素值接近的真實值,從而消除孤立的雜訊點,對於 斑點雜訊(speckle noise)和椒鹽雜訊(salt-and-pepper noise) 來說尤其有用,因為它不依賴於鄰域內那些與典型值差別很大的值。中值濾波器在處理連續圖像窗函數時與線性濾波器的工作方式類似,但濾波過程卻不再是加權運算。

中值濾波在一定的條件下可以克服常見線性濾波器如最小均方濾波、方框濾波器、均值濾波等帶來的圖像細節模糊,而且對濾除脈沖干擾及圖像掃描雜訊非常有效,也常用於保護邊緣信息, 保存邊緣的特性使它在不希望出現邊緣模糊的場合也很有用,是非常經典的平滑雜訊處理方法。

與均值濾波比較:

說明:中值濾波在一定條件下,可以克服線性濾波器(如均值濾波等)所帶來的圖像細節模糊,而且對濾除脈沖干擾即圖像掃描雜訊最為有效。在實際運算過程中並不需要圖像的統計特性,也給計算帶來不少方便。 但是對一些細節多,特別是線、尖頂等細節多的圖像不宜採用中值濾波。

雙邊濾波(Bilateral filter)是一種非線性的濾波方法,是結合 圖像的空間鄰近度和像素值相似度 的一種折衷處理,同時考慮空域信息和灰度相似性,達到保邊去噪的目的。具有簡單、非迭代、局部的特點。

雙邊濾波器的好處是可以做邊緣保存(edge preserving),一般過去用的維納濾波或者高斯濾波去降噪,都會較明顯地模糊邊緣,對於高頻細節的保護效果並不明顯。雙邊濾波器顧名思義比高斯濾波多了一個高斯方差 sigma-d ,它是基於空間分布的高斯濾波函數,所以在邊緣附近,離的較遠的像素不會太多影響到邊緣上的像素值,這樣就保證了邊緣附近像素值的保存。 但是由於保存了過多的高頻信息,對於彩色圖像里的高頻雜訊,雙邊濾波器不能夠干凈的濾掉,只能夠對於低頻信息進行較好的濾波。

運行結果

學習目標:

形態變換是基於圖像形狀的一些簡單操作。它通常在二進制圖像上執行。

膨脹與腐蝕實現的功能

侵蝕的基本思想就像土壤侵蝕一樣,它會侵蝕前景物體的邊界(總是試圖保持前景為白色)。那它是做什麼的?內核在圖像中滑動(如在2D卷積中)。只有當內核下的所有像素都是 1 時,原始圖像中的像素( 1 或 0 )才會被視為 1 ,否則它將被侵蝕(變為零)

erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst

與腐蝕的操作相反。如果內核下的至少一個像素為「1」,則像素元素為「1」。因此它增加了圖像中的白色區域或前景對象的大小增加。通常,在去除噪音的情況下,侵蝕之後是擴張。因為,侵蝕會消除白雜訊,但它也會縮小我們的物體。所以我們擴大它。由於噪音消失了,它們不會再回來,但我們的物體區域會增加。它也可用於連接對象的破碎部分

D. OpenCV-Python系列四:圖像分割(2)--梯度

上一期提到的圖像閾值處理,不僅可以實現獲取你想要的目標區域(作為mask使用),還可以幫你獲取圖像的邊緣信息,那關於圖像邊緣,本期將從另外的角度來處理。

對邊緣信息與背景差異較大的場景,你也可以使用threshold分割,不過若閾值不好選取,Laplacian梯度運算元就不失為一直嘗試方案,而且上網看看,關於Laplacian運算元還可以用來判斷圖像的模糊程度,這個在相機的自動對焦當中,是否可以嘗試判斷下?

不過處理的效果並不理想,圖像低灰階部分邊緣信息丟失嚴重。

對於sobel,laplacian運算元我們可以使用cv2.filter2D()來實現,配置相應的核模板即可,如實現提取水平方向邊緣信息:

你可以依據實際的應用需求來配置提取邊緣的角度信息,這里以45度角(垂直向下逆時針旋轉45度)為例:

對此,你可以採用下面的方式來解決:

E. 3種python3的canny邊緣檢測之靜態,可調節和自適應

先看高級版的python3的canny的自適應邊緣檢測:

內容:

1 canny的邊緣檢測的介紹。

2 三種方法的canny的邊緣檢測,由淺入深地介紹:固定值的靜態,可自調節的,自適應的。

說明:

1 環境:python3.8、opencv4.5.3和matplotlib3.4.3。

2 圖片:來自品閱網正版免費圖庫。

3 實現自適應閾值的canny邊緣檢測的參考代碼和文章:

上述的代碼,本機均有報錯,故對代碼進行修改,注釋和運行。

初級canny:

1 介紹:opencv中給出了canny邊緣檢測的介面,直接調用:

即可得到邊緣檢測的結果ret,其中,t1,t2是需要人為設置的閾值。

2 python的opencv的一行代碼即可實現邊緣檢測。

3 Canny函數及使用:

4 Canny邊緣檢測流程:

去噪 --> 梯度 --> 非極大值抑制 --> 滯後閾值

5 代碼:

6 操作和過程:

7 原圖:

8 疑問:

ret = cv2.canny(img,t1,t2),其中,t1,t2是需要人為設置的閾值,一般人怎麼知道具體數值是多少,才是最佳的呀?所以,這是它的缺點。

中級canny:

1 中級canny,就是可調節的閾值,找到最佳的canny邊緣檢測效果。

2 採用cv2.createTrackbar來調節閾值。

3 代碼:

4 操作和效果:

5 原圖:

高級canny:

1 自適應canny的演算法:

ret = cv2.canny(img,t1,t2)

即演算法在運行過程中能夠自適應地找到較佳的分割閾值t1,t2。

2 文件結構:

3 main.py代碼:

4 dog.py代碼:

5 bilateralfilt.py代碼:

6 原圖:

7 效果圖:本文第一個gif圖,此處省略。

小結:

1 本文由淺入深,總結的很好,適合收藏。

2 對於理解python的opencv的canny的邊緣檢測,很有幫助。

3 本文高級版canny自適應的演算法參考2篇文章,雖然我進行代碼的刪除,注釋,修改,優化等操作,故我不標注原創,對原作者表達敬意。

4 自己總結和整理,分享出來,希望對大家有幫助。

F. OpenCV-Python之——圖像SIFT特徵提取

在一定的范圍內,無論物體是大還是小,人眼都可以分辨出來。然而計算機要有相同的能力卻不是那麼的容易,在未知的場景中,計算機視覺並不能提供物體的尺度大小,其中的一種方法是把物體不同尺度下的圖像都提供給機器,讓機器能夠對物體在不同的尺度下有一個統一的認知。在建立統一認知的過程中,要考慮的就是在圖像在不同的尺度下都存在的特徵點。

在早期圖像的多尺度通常使用圖像金字塔表示形式。圖像金字塔是同一圖像在不同的解析度下得到的一組結果其生成過程一般包括兩個步驟:

多解析度的圖像金字塔雖然生成簡單,但其本質是降采樣,圖像的局部特徵則難以保持,也就是無法保持特徵的尺度不變性。

我們還可以通過圖像的模糊程度來模擬人在距離物體由遠到近時物體在視網膜上成像過程,距離物體越近其尺寸越大圖像也越模糊,這就是高斯尺度空間,使用不同的參數模糊圖像(解析度不變),是尺度空間的另一種表現形式。

構建尺度空間的目的是為了檢測出在不同的尺度下都存在的特徵點,而檢測特徵點較好的運算元是Δ^2G(高斯拉普拉斯,LoG)
使用LoG雖然能較好的檢測到圖像中的特徵點,但是其運算量過大,通常可使用DoG(差分高斯,Difference of Gaussina)來近似計算LoG。

從上式可以知道,將相鄰的兩個高斯空間的圖像相減就得到了DoG的響應圖像。為了得到DoG圖像,先要構建高斯尺度空間,而高斯的尺度空間可以在圖像金字塔降采樣的基礎上加上高斯濾波得到,也就是對圖像金字塔的每層圖像使用不同的參數σ進行高斯模糊,使每層金字塔有多張高斯模糊過的圖像。
如下圖,octave間是降采樣關系,且octave(i+1)的第一張(從下往上數)圖像是由octave(i)中德倒數第三張圖像降采樣得到。octave內的圖像大小一樣,只是高斯模糊使用的尺度參數不同。

對於一幅圖像,建立其在不同尺度scale下的圖像,也稱為octave,這是為了scale-invariant,也就是在任何尺度都能有對應的特徵點。下圖中右側的DoG就是我們構建的尺度空間。

為了尋找尺度空間的極值點,每一個采樣點要和它所有的相鄰點比較,看其是否比它的圖像域和尺度域的相鄰點大或者小。如圖所示,中間的檢測點和它同尺度的8個相鄰點和上下相鄰尺度對應的9×2個點共26個點比較,以確保在尺度空間和二維圖像空間都檢測到極值點。 一個點如果在DOG尺度空間本層以及上下兩層的26個領域中是最大或最小值時,就認為該點是圖像在該尺度下的一個特徵點。下圖中將叉號點要比較的26個點都標為了綠色。

找到所有特徵點後, 要去除低對比度和不穩定的邊緣效應的點 ,留下具有代表性的關鍵點(比如,正方形旋轉後變為菱形,如果用邊緣做識別,4條邊就完全不一樣,就會錯誤;如果用角點識別,則穩定一些)。去除這些點的好處是增強匹配的抗噪能力和穩定性。最後,對離散的點做曲線擬合,得到精確的關鍵點的位置和尺度信息。

近來不斷有人改進,其中最著名的有 SURF(計算量小,運算速度快,提取的特徵點幾乎與SIFT相同)和 CSIFT(彩色尺度特徵不變變換,顧名思義,可以解決基於彩色圖像的SIFT問題)。

其中sift.detectAndCompute()函數返回kp,des。

上圖dog的shape為(481, 500, 3),提取的特徵向量des的shape為(501, 128),501個128維的特徵點。

該方法可以在特徵點處繪制一個小圓圈。

https://blog.csdn.net/happyer88/article/details/45817305
https://www.jianshu.com/p/d94e558ebe26
https://www.cnblogs.com/wangguchangqing/p/4853263.html

G. OpenCV-Python教程:57.圖像修復

基礎

你們可能家裡都會有一些老照片已經有黑點啊,劃痕啊等。你有想過修復它們么?我們不能簡單的在繪圖工具里把他們擦除了就完了。因為這樣只是把黑色的東西變成白色的而已,實際上沒用。在這種情況下,會用到一種技術叫圖像修復。基本的思想很簡單:用周圍的像素替換壞掉的像素,這樣看上去就和周圍一樣了。比如下面這張:

很多演算法被設計來干這個,OpenCV提供了兩個,可以用同一個函數來訪問: cv2.inpaint()

第一個演算法是基於論文" An Image Inpainting Technique Based on the Fast Marching Method"。 是基於快速匹配方法的。假設圖像里的一個區域要修復。演算法從這個區域的邊界開始,逐漸地進入區域,把邊界內的所有東西填充上。它取要修復的部分周圍的一個像素周圍的一小片鄰居。這個像素被周圍已知的像素的標准加權和替換掉。選擇權重是很重要的。要修復的點周圍像素的權重較高。和正常邊界近的,還有在邊界輪廓上的像素的權重較高。當像素被修復以後,它會通過快速匹配方法(FMM)移動到最近的像素。FMM保證那些已知像素周圍的像素首先被修復,所以這個就像人工啟發式的操作一樣。這個演算法使用標志cv2.INPAINT_TELEA開啟。

第二個演算法基於論文" Navier-Stokes, Fluid Dynamics, and Image and Video Inpainting ".這個演算法基於流體動力學和偏微分方程。基本原則是啟發式。它首從已知區域先沿著邊緣到未知區域訪問(由於邊緣應該是連續的)。在匹配邊要修復區域邊界的梯度向量時持續畫等值線(把相同亮度的點用線連起來,類似於輪廓線)。這時候用到流體動力學。之後會填充顏色以減小最小方差。這個演算法用標志cv2.INPAINT_NS啟用。

編碼

我們需要創建和輸入圖像相同大小的掩圖,需要修復的區域對應的像素要非0.剩下的就簡單了。我的圖像被一些黑色劃痕給破壞了(實際上是我自己加的)。我用繪圖工具對應的標記出來。

看下面的結果。第一個圖片是輸入圖像,第二個是掩圖,第三個是用第一種演算法的結果,最後一張是第二種演算法的結果。

END

閱讀全文

與pythonopencv邊緣相關的資料

熱點內容
考駕照怎麼找伺服器 瀏覽:882
阿里雲伺服器如何更換地區 瀏覽:968
手機app調音器怎麼調古箏 瀏覽:501
銳起無盤系統在伺服器上需要設置什麼嗎 瀏覽:17
紅旗計程車app怎麼應聘 瀏覽:978
如何編寫linux程序 瀏覽:870
吉利車解壓 瀏覽:248
java輸入流字元串 瀏覽:341
安卓軟體沒網怎麼回事 瀏覽:785
dvd壓縮碟怎麼導出電腦 瀏覽:274
冒險島什麼伺服器好玩 瀏覽:541
如何在伺服器上做性能測試 瀏覽:793
命令序列錯 瀏覽:259
javaif的條件表達式 瀏覽:576
手機app上傳的照片怎麼找 瀏覽:531
雲伺服器面臨哪些威脅 瀏覽:748
c語言各種編譯特點 瀏覽:177
路由器多種加密方法 瀏覽:604
程序員阻止電腦自動彈出定位 瀏覽:168
如何做伺服器服務商 瀏覽:762