mat mat_blur;
mat_blur = in.clone();
gaussianblur(in, mat_blur, size(blursize, blursize), 0, 0, border_default);//高斯平滑
mat mat_gray;
if (mat_blur.channels() == 3)
cvtcolor(mat_blur, mat_gray, cv_rgb2gray);
else
mat_gray = mat_blur;
int scale = sobel_scale;
int delta = sobel_delta;
int ddepth = sobel_ddepth;
mat grad_x, grad_y;
mat abs_grad_x, abs_grad_y;
sobel(mat_gray, grad_x, ddepth, 1, 0, 3, scale, delta, border_default);
convertscaleabs(grad_x, abs_grad_x);//
對於每個輸入陣列的元素函式
convertscaleabs
進行三次操作依次是:縮放,得到乙個絕對值,轉換成無符號8位型別
mat grad;
addweighted(abs_grad_x, sobel_x_weight, 0, 0, 0, grad);//
函式addweighted
兩個陣列的加權
mat mat_threshold;
double otsu_thresh_val =
threshold(grad, mat_threshold, 0, 255, cv_thresh_otsu + cv_thresh_binary);
mat element = getstructuringelement(morph_rect, size(morphw, morphh));
morphologyex(mat_threshold, mat_threshold, morph_close, element);
//out = mat_threshold;閉運算
return 0;
}element:腐蝕操作的核心。 如果不指定,預設為乙個簡單的
anchor:預設為point(-1,-1),核心中心點。省略時為預設值。
iterations:腐蝕次數。省略時為預設值1。
bordertype:推斷邊緣型別,具體參見borderinterpolate函式。預設為border_default,省略時為預設值。
OPENCV中的Sobel函式
sobel運算元是一種常用的邊緣檢測運算元,是一階的梯度演算法。對雜訊具有平滑作用,提供較為精確的邊緣方向資訊,邊緣定位精度不夠高。當對精度要求不是很高時,是一種較為常用的邊緣檢測方法。它進行處理的模板如下 其中,gx是橫向的運算元,gy是縱向的運算元。原影象記為f,則 gx gx f gy gy ...
OpenCV學習筆記 Sobel運算元
該函式如下 使用擴充套件 sobel 運算元計算一階 二階 三階或混合影象差分 void cvsobel const cvarr src,cvarr dst,int xorder,int yorder,int aperture size 3 src 輸入影象.dst輸出影象.xorder x 方向上...
OpenCV學習筆記 Sobel運算元
該函式如下 使用擴充套件 sobel 運算元計算一階 二階 三階或混合影象差分 void cvsobel const cvarr src,cvarr dst,int xorder,int yorder,int aperture size 3 src 輸入影象.dst輸出影象.xorder x 方向上...