第8章 形態學操作

2021-10-14 16:31:44 字數 3169 閱讀 9046

《opencv 輕鬆入門 面向python》 學習筆記

核函式

結構元與前景色有兩種不同關係。根據這兩種不同的關係來決定,腐蝕結果影象中的結構元中心點所對應位置畫素點的畫素值。

函式原型:

dst = cv2.erode( src, kernel[

, anchor[

, iterations[

, bordertype]]]

)

引數:

舉例:

import cv2

import numpy as np

image = np.zeros((5

,5), dtype=np.uint8)

image[1:

4,1:

4]=1

kernel = np.ones((3

,1), dtype=np.uint8)

erosion = cv2.erode(image, kernel)

print

(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]]

函式原型:

dst = cv2.dilate( src, kernel[

, anchor[

, iterations[

, bordertype]]]

)

舉例:

import cv2

import numpy as np

image = np.zeros((5

,5), dtype=np.uint8)

image[2:

3,1:

4]=1

kernel = np.ones((3

,1), dtype=np.uint8)

erosion = cv2.dilate(image, kernel)

print

(erosion)

# 輸出為:

# [[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]]

函式原型:

cv2.morphologyex(src, op, kernel, iteration)
引數:

op:操作型別

3. 開運算 cv2.morph_open

開運算的操作是先將影象腐蝕,再對腐蝕的結果進行膨脹。

開運算可以用於去噪。

cv2.morphologyex(src_img, cv2.morph_open, kernel)
4. 閉運算 cv2.morph_close

閉運算是先膨脹後腐蝕的閉運算,它有助於關閉前景物體內部的小孔,去除物體上的小黑點,還可以將不同的前景影象進行連線。

cv2.morphologyex(src_img, cv2.morph_close, kernel)
5. 形態學梯度運算 cv2.morph_gradien

形態學梯度運算是用影象的膨脹影象減腐蝕影象的操作。

該操作可以獲取原始影象中前景影象的邊緣。

cv2.morphologyex(src_img, cv2.morph_gradien, kernel)
6. 禮帽運算 cv2.morph_tophat

禮帽運算是用影象的原始影象減開運算影象的操作。

禮帽運算能夠獲取影象的雜訊資訊,或者得到比原始影象的邊緣更亮的邊緣資訊。

cv2.morphologyex(src_img, cv2.morph_tophat, kernel)
7. 黑帽運算 cv2.morph_blackhat

黑帽運算是用影象的閉運算影象減原始影象的操作。

黑帽運算能夠獲取影象內部的小孔,或前景色中的小黑點,或者比原始影象邊緣更暗的邊緣部分

cv2.morphologyex(src_img, cv2.morph_blackhat, kernel)
在進行形態學操作時,必須使用乙個特定的核,該核可以自定義生成,也可以通過函式 cv2.getstructuringelement() 構造

函式原型:

cv2.getstructuringelement(shape, ksize)
引數:

shape:代表形狀型別

ksize:代表形狀元素的大小

import cv2

import numpy as np

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)

print

('\n'

, kernel2)

print

('\n'

, kernel3)

# 輸出為:

# [[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]]

# # [[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]]

# # [[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]]

形態學操作

對原影象進行先腐蝕後膨脹。用白色背景黑色前景的來說,對影象先進行腐蝕,小區域的白色將被消除,然後在膨脹,使得除了消除掉的部分還原為原來的樣子 主要用途 用來消除高畫素值的小塊 對原影象進行先膨脹後腐蝕。還是利用白色背景黑色前景的來說,對影象先進行膨脹,小區域的黑色將被消除,然後再進行腐蝕,使得除了消...

形態學操作

簡介 連通域 簡介 結構元素 mat cv getstructuringelement shape,ksize 實現 opencv提供了用於影象腐蝕的erode 函式 void cv erode src,dst,kernel,anchor,iterations 示例 include include ...

morphologyEX形態學操作

一般形態學操作會有兩步 mat kernel getstructuringelement morph rect,size 3,3 point 1,1 morphologyex src,dst,morph open,kernel,point 1,1 1 其中第一步用於構造乙個結構元素,也就是在第二步需...