§?erode()
void cv::erode | ( | InputArray | src, |
OutputArray | dst, | ||
InputArray | kernel, | ||
Point |
anchor?=?Point(-1,-1) , |
||
int? |
iterations?=?1 , |
||
int? |
borderType?=?BORDER_CONSTANT , |
||
const?Scalar?&? |
borderValue?=?morphologyDefaultBorderValue() ? |
||
) |
Python: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
dst | = | cv.erode( | src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]] | ) |
通過使用特定的結(jié)構(gòu)元素來腐蝕圖像。
該函數(shù)使用指定的結(jié)構(gòu)元素侵蝕源圖像,該元素確定取最小值的像素鄰域的形狀:
該函數(shù)支持就地模式。侵蝕可以應(yīng)用幾次(迭代)。對(duì)于多通道圖像,每個(gè)通道都是獨(dú)立處理的。
參數(shù)
src | 輸入圖像; 通道數(shù)可以是任意的,圖像類型應(yīng)該是以下幾種類型中的其中之一:CV_8U, CV_16U, CV_16S, CV_32F or CV_64F。 |
dst | 輸出圖像,與 SRC 大小和類型相同。 |
kernel | 用于腐蝕的結(jié)構(gòu)元件;如果 element=Mat(),則使用 3 x 3 矩形結(jié)構(gòu)元素。內(nèi)核可以使用?getStructuringElement?函數(shù)獲得。 |
anchor | 錨點(diǎn)在元素中的位置;默認(rèn)值 (-1, -1) 表示定位點(diǎn)位于元素中心。 |
iterations | 施加腐蝕的次數(shù)。 |
borderType | 像素外推法,,參考?BorderTypes |
borderValue | 常量邊框情況下的邊框值 |
See also
dilate,?morphologyEx,?getStructuringElement
Examples:
morphology2.cpp,?Morphology_1.cpp, and?segment_objects.cpp.
以上圖標(biāo)來自opencv的官方文檔。
下面重點(diǎn)說一下結(jié)構(gòu)元素的獲取,官方文檔推薦用cv2.getStructuringElement函數(shù)來獲得,該函數(shù)共可生成三種類型的結(jié)構(gòu)元素:
cv.MORPH_RECT矩形,腐蝕后的圖像細(xì)節(jié)為矩形
?
?
cv.MORPH_CROSS十字交叉型,腐蝕后的圖像細(xì)節(jié)會(huì)呈現(xiàn)十字型
?
?
cv.MORPH_ELLIPSE橢圓形,腐蝕后的圖像細(xì)節(jié)會(huì)呈現(xiàn)橢圓形
?
?除了上面三種類型的結(jié)構(gòu)元素,也可以自己設(shè)定結(jié)構(gòu)元素,例如:
kernel=(1,1,1,1)是一個(gè)4*1列向量,腐蝕后圖像細(xì)節(jié)會(huì)呈現(xiàn)豎條狀
?
kernel=np.array([[1, 1, 1, 1]], dtype=np.uint8)) ,兩個(gè)[][]的是1*4的行向量,腐蝕后圖像細(xì)節(jié)會(huì)呈現(xiàn)橫條狀
?注意:cv2.erode()函數(shù)默認(rèn)白色為前景目標(biāo),黑色為背景,所有腐蝕操作對(duì)象都是對(duì)白色部分操作的,即腐蝕會(huì)使白色目標(biāo)區(qū)域變小。上面實(shí)例中,白色為較多點(diǎn),黑色部分是裂縫區(qū)域,腐蝕的對(duì)象為白色背景區(qū)域,所以會(huì)減小白色區(qū)域,增大了黑色區(qū)域。文章來源:http://www.zghlxwxcb.cn/news/detail-628513.html
代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-628513.html
import numpy as np
import cv2 as cv
image = cv.imread('gkbuhxb5pe.jpg') # 讀取圖片,默認(rèn)為彩色圖片
imgGray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # 轉(zhuǎn)換為灰度圖像
imgGaussBlur = cv.GaussianBlur(imgGray, ksize=(3, 3), sigmaX=2) # sigmaX:x 軸方向的高斯核標(biāo)準(zhǔn)差
binaryGaussian = cv.adaptiveThreshold(imgGaussBlur, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 7, 6) # 局部自適應(yīng)閾值二值化
kernel_RECT = cv.getStructuringElement(cv.MORPH_RECT, (5, 5)) # 生成腐蝕結(jié)構(gòu)元素
print('kenerl_RECT=')
print(kernel_RECT)
kernel_CROSS = cv.getStructuringElement(cv.MORPH_CROSS, (5, 5)) # 生成腐蝕結(jié)構(gòu)元素
print('kenerl_CROSS=')
print(kernel_CROSS)
kernel_ELLIPS = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5, 5)) # 生成腐蝕結(jié)構(gòu)元素
print('kenerl_ELLIPS=')
print(kernel_ELLIPS)
binary_Erode1 = cv.erode(binaryGaussian, kernel=kernel_RECT) # 腐蝕操,二值圖像
binary_Erode2 = cv.erode(binaryGaussian, kernel=kernel_CROSS) # 腐蝕操,二值圖像
binary_Erode3 = cv.erode(binaryGaussian, kernel=kernel_ELLIPS) # 腐蝕操,二值圖像
binary_Erode4 = cv.erode(binaryGaussian, kernel=(1, 1, 1, 1)) # 腐蝕操,二值圖像,kernel=(1,1,1,1)默認(rèn)為一個(gè)4*1列向量
binary_Erode5 = cv.erode(binaryGaussian, kernel=np.array([[1, 1, 1, 1]], dtype=np.uint8)) # 腐蝕操,二值圖像,兩個(gè)[][]的是1*4的行向量
cv.namedWindow('image', 0) # 設(shè)置窗口大小
cv.imshow('image', image) # 顯示圖片
cv.waitKey(0)
cv.namedWindow('binary_Erode1', 0) # 設(shè)置窗口大小
cv.imshow('binary_Erode1', binary_Erode1) # 顯示圖片
cv.waitKey(0)
cv.namedWindow('binary_Erode2', 0) # 設(shè)置窗口大小
cv.imshow('binary_Erode2', binary_Erode2) # 顯示圖片
cv.waitKey(0)
cv.namedWindow('binary_Erode3', 0) # 設(shè)置窗口大小
cv.imshow('binary_Erode3', binary_Erode3) # 顯示圖片
cv.waitKey(0)
cv.namedWindow('binary_Erode4', 0) # 設(shè)置窗口大小
cv.imshow('binary_Erode4', binary_Erode4) # 顯示圖片
cv.waitKey(0)
cv.namedWindow('binary_Erode5', 0) # 設(shè)置窗口大小
cv.imshow('binary_Erode5', binary_Erode5) # 顯示圖片
cv.waitKey(0)
cv.imwrite('D:/binary_Erode1.jpg', binary_Erode1) # 保存圖像文件
cv.imwrite('D:/binary_Erode2.jpg', binary_Erode2) # 保存圖像文件
cv.imwrite('D:/binary_Erode3.jpg', binary_Erode3) # 保存圖像文件
cv.imwrite('D:/binary_Erode4.jpg', binary_Erode4) # 保存圖像文件
cv.imwrite('D:/binary_Erode5.jpg', binary_Erode5) # 保存圖像文件
到了這里,關(guān)于OpenCV腐蝕函數(shù):cv2.erode()使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!