和前一课差不多,不多讲了,直接上代码。
代码:
#include "stdafx.h"
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
// Read image
Mat image;
image = imread("F://Opencv_picture/s4.jpg");
if(image.empty())
{
cout<<"Cannot find or open image"<<endl;
return -1;
}
//Create window
namedWindow("Image_dilate", 0);
//Create trackbar
int dilation_elem= 0;
int dilation_size= 0;
createTrackbar("Element", "Image_dilate", &dilation_elem, 2);
createTrackbar("Kernel", "Image_dilate", &dilation_size, 100);
while(true)
{
Mat dst;
int dilation_type;
if(dilation_elem== 0)
{
dilation_type= MORPH_RECT;
}
else if(dilation_elem== 1)
{
dilation_type= MORPH_CROSS;
}
else if(dilation_elem== 2)
{
dilation_type= MORPH_ELLIPSE;
}
Mat element= getStructuringElement(dilation_type,
Size(2* dilation_size+ 1, 2* dilation_size+ 1),
Point(dilation_size, dilation_size) );
dilate(image, dst, element);
//show image
imshow("Image_dilate", dst);
//wait untill user press any key
if(waitKey(33)== 27)
{
break;
}
}
return 0;
}
结果图: