形态学是一门图像分析学科,是基于形状的一系列操作。最基本的操作是腐蚀(erode)和膨胀(dilate),他们都是针对白色区域而言的。
膨胀和腐蚀
从数学角度说,就是将图像的一部分与核进行卷积。核具有一个单独定义出来的锚点(anchorpoint)
他们的内部核心函数都是morphOp
下面的程序是控制条控制腐蚀和膨胀的程序。
#include
#include
#include
#include
#include
#include
#include "vector" using namespace cv; using namespace std; int choose=1; int edsize=5; Mat g_src; Mat g_dst; Mat element; static void on_chooseSlide(int,void*); static void on_edsizeSlide(int,void*); void process(); int main () { g_src=imread("cui.jpg"); namedWindow("a"); element=getStructuringElement(MORPH_RECT,Size(edsize*2+1,edsize*2+1)); erode(g_src,g_dst,element); imshow("a",g_dst); createTrackbar("选择膨胀、腐蚀","a",&choose,1,on_chooseSlide); createTrackbar("核尺寸","a",&edsize,10,on_edsizeSlide); while(char(waitKey(1)!='q')){} } static void on_chooseSlide(int,void*) { process(); } static void on_edsizeSlide(int,void*) { process(); } void process() { element=getStructuringElement(MORPH_RECT,Size(edsize*2+1,edsize*2+1)); if(choose==0) { erode(g_src,g_dst,element); } else { dilate(g_src,g_dst,element); } imshow("a",g_dst); }