不呼叫函式實現開閉運算,c++**實現
開運算:先腐蝕後膨脹;
閉運算:先膨脹後腐蝕。
開運算:
#include #includeusing
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 #includesrcimgwindow:第一張原圖;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;
}
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...