2
* @file Morphology_1.cpp
3
* @brief Erosion and Dilation sample code
7
#include "opencv2/imgproc/imgproc.hpp"
8
#include "opencv2/imgcodecs.hpp"
9
#include "opencv2/highgui/highgui.hpp"
16
Mat src, erosion_dst, dilation_dst;
20
int dilation_elem = 0;
21
int dilation_size = 0;
22
int const max_elem = 2;
23
int const max_kernel_size = 21;
25
/** Function Headers */
26
void Erosion( int, void* );
27
void Dilation( int, void* );
32
int main( int, char** argv )
35
src = imread( argv[1] );
41
namedWindow( "Erosion Demo", WINDOW_AUTOSIZE );
42
namedWindow( "Dilation Demo", WINDOW_AUTOSIZE );
43
moveWindow( "Dilation Demo", src.cols, 0 );
45
/// Create Erosion Trackbar
46
createTrackbar( "Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Erosion Demo",
47
&erosion_elem, max_elem,
50
createTrackbar( "Kernel size:\n 2n +1", "Erosion Demo",
51
&erosion_size, max_kernel_size,
54
/// Create Dilation Trackbar
55
createTrackbar( "Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Dilation Demo",
56
&dilation_elem, max_elem,
59
createTrackbar( "Kernel size:\n 2n +1", "Dilation Demo",
60
&dilation_size, max_kernel_size,
74
void Erosion( int, void* )
77
if( erosion_elem == 0 ){ erosion_type = MORPH_RECT; }
78
else if( erosion_elem == 1 ){ erosion_type = MORPH_CROSS; }
79
else if( erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; }
81
Mat element = getStructuringElement( erosion_type,
82
Size( 2*erosion_size + 1, 2*erosion_size+1 ),
83
Point( erosion_size, erosion_size ) );
84
/// Apply the erosion operation
85
erode( src, erosion_dst, element );
86
imshow( "Erosion Demo", erosion_dst );
92
void Dilation( int, void* )
94
int dilation_type = 0;
95
if( dilation_elem == 0 ){ dilation_type = MORPH_RECT; }
96
else if( dilation_elem == 1 ){ dilation_type = MORPH_CROSS; }
97
else if( dilation_elem == 2) { dilation_type = MORPH_ELLIPSE; }
99
Mat element = getStructuringElement( dilation_type,
100
Size( 2*dilation_size + 1, 2*dilation_size+1 ),
101
Point( dilation_size, dilation_size ) );
102
/// Apply the dilation operation
103
dilate( src, dilation_dst, element );
104
imshow( "Dilation Demo", dilation_dst );