opencv 形態學應用 提取提取水平與垂直線

2021-10-16 09:08:30 字數 3100 閱讀 3911

**現象

影象形態學操作時候,可以通過自定義的結構元素實現結構元素對輸入影象一些物件敏感、另外一些物件不敏感,這樣就會讓敏感的物件改變而不敏感的物件保留輸出。

通過使用兩個最基本的形態學操作 – 膨脹與腐蝕,使用不同的結構元素實現對輸入影象的操作、得到想要的結果。

比如開操作,先腐蝕後膨脹,將白色的小塊去掉了

轉換二值影象

adaptivethreshold

(mat src,

// 輸入的灰度影象

mat dest,

// 二值影象

double maxvalue,

// 二值影象最大值(255)

int adaptivemethod // 自適應方法,只能其中之一 –

// adaptive_thresh_mean_c , adaptive_thresh_gaussian_c

int thresholdtype,

// 閾值型別

int blocksize,

// 塊大小

double c // 常量c 可以是正數,0,負數

)

adaptivethreshold

(~gray, binimg,

255, adaptive_thresh_mean_c, thresh_binary,15,

-2);

定義結構元素

mat getstructuringelement

(int shape,

size ksize,

point anchor =

point(-

1,-1));

(1)int型別的shape,元素形狀,可以是cv::morphshapes之一。

(2)size型別的ksize,結構化元素的大小。

(3)point型別的anchor,預設值(-1,-1),表示錨定位於中心。請注意,只有十字形元素的形狀取決於錨定位置。在其他情況下,錨只是調節形態學操作結果的移動量。

第乙個引數有這幾種選項

-(1)morph_rect:矩形結構區域。

-(2)morph_cross,十字形結構區域。

-(3)morph_ellipse,橢圓結構區域,內接於矩形rect(0,0,esize.width,0.esize.height)的填充橢圓。

#include

#include

using namespace std;

using namespace cv;

intmain()

namedwindow

("src"

, cv_window_autosize)

;imshow

("src"

, src)

;/*轉化為灰度圖*/

mat gray;

if(src.

channels()

==3)else

imshow

("gray pic "

, gray)

;//轉化為二值影象

mat binimg;

adaptivethreshold

(~gray, binimg,

255, adaptive_thresh_mean_c, thresh_binary,15,

-2);

imshow

("binimg"

, binimg)

;//定義結構元素

mat hline =

getstructuringelement

(morph_rect,

size

(src.cols/16,

1),point(-

1,-1

));//橫著的結構元素

mat vline =

getstructuringelement

(morph_rect,

size(1

,src.rows /16)

,point(-

1,-1

));//豎著的結構元素

//開操作

mat xdst;

mat ydst;

morphologyex

(binimg, xdst, cv_mop_open, hline)

;morphologyex

(binimg, ydst, cv_mop_open, vline)

;//優化後輸出

基於形態學眼底血管提取

形態學是一種比較新的影象處理方法,它可以以一種特定的形態和結構元素作為樣本提取出對應的形狀,從而得到我們所需要的結構,且它包含有四種基本操作 膨脹 腐蝕 以及開閉操作。基於這些操作,我們可以實現對眼底血管的提取。laplace運算元是常用的邊緣檢測運算元,是一種簡單的各向同性的微分運算元,它的作用是...

opencv形態學操作,提取水平與垂直線

可做驗證碼識別 mat temp,temp1 cvtcolor src,temp,cv bgr2gray imshow temp temp adaptivethreshold temp,temp1,255,adaptive thresh mean c,thresh binary,15,2 轉換為二值...

opencv學習 形態學

void cvdilate const cvarr src,cvarr dst,iplconvkernel element null,int iterations 1 void cverode const cvarr src,cvarr dst,iplconvkernel element null,...