123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /**
- * @file copyMakeBorder_demo.cpp
- * @brief Sample code that shows the functionality of copyMakeBorder
- * @author OpenCV team
- */
- #include "opencv2/imgproc.hpp"
- #include "opencv2/imgcodecs.hpp"
- #include "opencv2/highgui.hpp"
- using namespace cv;
- //![variables]
- // Declare the variables
- Mat src, dst;
- int top, bottom, left, right;
- int borderType = BORDER_CONSTANT;
- const char* window_name = "copyMakeBorder Demo";
- RNG rng(12345);
- //![variables]
- /**
- * @function main
- */
- int main( int argc, char** argv )
- {
- //![load]
- const char* imageName = argc >=2 ? argv[1] : "lena.jpg";
- // Loads an image
- src = imread( samples::findFile( imageName ), IMREAD_COLOR ); // Load an image
- // Check if image is loaded fine
- if( src.empty()) {
- printf(" Error opening image\n");
- printf(" Program Arguments: [image_name -- default lena.jpg] \n");
- return -1;
- }
- //![load]
- // Brief how-to for this program
- printf( "\n \t copyMakeBorder Demo: \n" );
- printf( "\t -------------------- \n" );
- printf( " ** Press 'c' to set the border to a random constant value \n");
- printf( " ** Press 'r' to set the border to be replicated \n");
- printf( " ** Press 'ESC' to exit the program \n");
- //![create_window]
- namedWindow( window_name, WINDOW_AUTOSIZE );
- //![create_window]
- //![init_arguments]
- // Initialize arguments for the filter
- top = (int) (0.05*src.rows); bottom = top;
- left = (int) (0.05*src.cols); right = left;
- //![init_arguments]
- for(;;)
- {
- //![update_value]
- Scalar value( rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255) );
- //![update_value]
- //![copymakeborder]
- copyMakeBorder( src, dst, top, bottom, left, right, borderType, value );
- //![copymakeborder]
- //![display]
- imshow( window_name, dst );
- //![display]
- //![check_keypress]
- char c = (char)waitKey(500);
- if( c == 27 )
- { break; }
- else if( c == 'c' )
- { borderType = BORDER_CONSTANT; }
- else if( c == 'r' )
- { borderType = BORDER_REPLICATE; }
- //![check_keypress]
- }
- return 0;
- }
|