From: Ana Huaman Date: Sat, 18 Jun 2011 20:30:31 +0000 (+0000) Subject: Morphology code 1 added to tutorial-code/Image_Processing X-Git-Tag: accepted/2.0/20130307.220821~2711 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5006ba773f998292259c9a908b69406fa7c55de7;p=profile%2Fivi%2Fopencv.git Morphology code 1 added to tutorial-code/Image_Processing --- diff --git a/samples/cpp/tutorial_code/Image_Processing/Morphology_1.cpp b/samples/cpp/tutorial_code/Image_Processing/Morphology_1.cpp new file mode 100644 index 0000000..8b8cc8e --- /dev/null +++ b/samples/cpp/tutorial_code/Image_Processing/Morphology_1.cpp @@ -0,0 +1,105 @@ +/** + * @file Morphology_1.cpp + * @brief Erosion and Dilation sample code + * @author OpenCV team + */ + +#include "opencv2/imgproc/imgproc.hpp" +#include "opencv2/highgui/highgui.hpp" +#include "highgui.h" +#include +#include + +using namespace cv; + +/// Global variables +Mat src, erosion_dst, dilation_dst; + +int erosion_elem = 0; +int erosion_size = 0; +int dilation_elem = 0; +int dilation_size = 0; +int const max_elem = 2; +int const max_kernel_size = 21; + +/** Function Headers */ +void Erosion( int, void* ); +void Dilation( int, void* ); + +/** + * @function main + */ +int main( int argc, char** argv ) +{ + /// Load an image + src = imread( argv[1] ); + + if( !src.data ) + { return -1; } + + /// Create windows + namedWindow( "Erosion Demo", CV_WINDOW_AUTOSIZE ); + namedWindow( "Dilation Demo", CV_WINDOW_AUTOSIZE ); + cvMoveWindow( "Dilation Demo", src.cols, 0 ); + + /// Create Erosion Trackbar + createTrackbar( "Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Erosion Demo", + &erosion_elem, max_elem, + Erosion ); + + createTrackbar( "Kernel size:\n 2n +1", "Erosion Demo", + &erosion_size, max_kernel_size, + Erosion ); + + /// Create Dilation Trackbar + createTrackbar( "Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Dilation Demo", + &dilation_elem, max_elem, + Dilation ); + + createTrackbar( "Kernel size:\n 2n +1", "Dilation Demo", + &dilation_size, max_kernel_size, + Dilation ); + + /// Default start + Erosion( 0, 0 ); + Dilation( 0, 0 ); + + waitKey(0); + return 0; +} + +/** + * @function Erosion + */ +void Erosion( int, void* ) +{ + int erosion_type; + if( erosion_elem == 0 ){ erosion_type = MORPH_RECT; } + else if( erosion_elem == 1 ){ erosion_type = MORPH_CROSS; } + else if( erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; } + + Mat element = getStructuringElement( erosion_type, + Size( 2*erosion_size + 1, 2*erosion_size+1 ), + Point( erosion_size, erosion_size ) ); + /// Apply the erosion operation + erode( src, erosion_dst, element ); + imshow( "Erosion Demo", erosion_dst ); +} + +/** + * @function Dilation + */ +void Dilation( int, void* ) +{ + 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 ) ); + /// Apply the dilation operation + dilate( src, dilation_dst, element ); + imshow( "Dilation Demo", dilation_dst ); +}