形態學應用 開閉運算

2022-05-16 14:08:22 字數 3406 閱讀 5181

不呼叫函式實現開閉運算,c++**實現

開運算:先腐蝕後膨脹;

閉運算:先膨脹後腐蝕。

開運算:

#include #include 

using

namespace

std;

using

namespace

cv;int

main()

,, };

uchar s[5][5] = ,,,, };

//定義乙個新的,進行第一步,先腐蝕

mat erodeimg(binaryimg.rows, binaryimg.cols,binaryimg.type());

for (int i = 0; i < h; i++)

} //下面是對二值進行腐蝕操作

int j1 = 0

;

for (int i = 0; i < h - 4; i++) //原影象}}

if (i1 == 4 && j1 == 5

) //遍歷完模板,符合要求,將錨點所在位置畫素設為255

if (j1 != 5

) //裡面的迴圈通過break跳出的}}

}//定義乙個新的,進行第二步,後膨脹,使用同乙個模板

mat dilimg(erodeimg.rows, erodeimg.cols, erodeimg.type());

for (int i = 0; i < h; i++)

}//下面是對二值進行膨脹操作

int j2 = 0

;

for (int i = 0; i < h - 4; i++)}}

if (i1 != 4 || j2 != 5) //

說明是上面是break出來的}}

}namedwindow(

"srcimgwindow

", cv_window_normal);

namedwindow(

"binaryimgwindow

", cv_window_normal);

namedwindow(

"erodeimgimgwindow

", cv_window_normal);

namedwindow(

"dilimgimgwindow

", cv_window_normal);

//原imshow("

srcimgwindow

", srcimg);

//二值

imshow("

binaryimgwindow

",binaryimg );

//先腐蝕之後的

imshow("

erodeimgimgwindow

", erodeimg);

//後膨脹之後的

閉運算;

#include #include 

using

namespace

std;

using

namespace

cv;int

main()

,, };

uchar s[5][5] = ,,,, };

//對模板做關於原點的對映

uchar ss[5][5

];

for (int i = 0; i < 5; i++)

}//定義乙個新的,進行第一步,膨脹

mat dilimg(binaryimg.rows, binaryimg.cols, binaryimg.type());

for (int i = 0; i < h; i++)

}//下面是對二值進行膨脹操作

int j2 = 0

;

for (int i = 0; i < h - 4; i++)}}

if (i1 != 4 || j2 != 5) //

說明是上面是break出來的}}

}//定義乙個新的,進行第二步,腐蝕

mat erodeimg(dilimg.rows, dilimg.cols, dilimg.type());

for (int i = 0; i < h; i++)

}//下面是對二值進行腐蝕操作

int j1 = 0

;

for (int i = 0; i < h - 4; i++) //

原影象 }

}if (i1 == 4 && j1 == 5) //

遍歷完模板,符合要求,將錨點所在位置畫素設為255

if (j1 != 5) //

裡面的迴圈通過break跳出的}}

}namedwindow(

"srcimgwindow

", cv_window_normal);

namedwindow(

"binaryimgwindow

", cv_window_normal);

namedwindow(

"erodeimgimgwindow

", cv_window_normal);

namedwindow(

"dilimgimgwindow

", cv_window_normal);

//原imshow("

srcimgwindow

", srcimg);

//二值

imshow("

binaryimgwindow

", binaryimg);

//先膨脹之後的

imshow("

dilimgimgwindow

", dilimg);

//後腐蝕之後的

imshow("

erodeimgimgwindow

", erodeimg);

waitkey(

1000000

);

return0;

}

srcimgwindow:第一張原圖;

binaryimgwindow:第二張二值;

erodeimgwindow:第三張先腐蝕後的;

dilimgwindow:第四張腐蝕後又膨脹的,即開運算結果。

形態學運算元 腐蝕,膨脹,開閉

本文總結了腐蝕,膨脹和開閉操作在二值影象上的應用,基於opencv給出了例項。參考 數字影象處理 第三版 岡薩雷斯 腐蝕的定義為 在二維整數空間 其中上面的定義含義是,b對a的腐蝕是乙個用z平移的b包含在a中的所有的點z的集合。腐蝕縮小或細化了二值影象中的物體。可以將腐蝕視為形態學濾波,這種操作將小...

形態學操作 開運算

開運算 先腐蝕再膨脹 去掉無關小細節 去除雜訊 可以通過調整核的大小,調整效果。當卷積核大小為3 3時,毛刺沒有去乾淨,這時可以增加核的大小 import cv2 import numpy as np a cv2.imread image erode.bmp k np.ones 3,3 np.uin...

腐蝕膨脹,開閉運算,形態學梯度,頂帽,黑帽

膨脹dilate void dilate inputarray src,outputarray dst,inputarray kernel,point anchor point 1,1 int iterations 1,int bordertype border constant,const sca...