12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * @file CannyDetector_Demo.cpp
- * @brief Sample code showing how to detect edges using the Canny Detector
- * @author OpenCV team
- */
- #include "opencv2/imgproc.hpp"
- #include "opencv2/highgui.hpp"
- #include <iostream>
- using namespace cv;
- //![variables]
- Mat src, src_gray;
- Mat dst, detected_edges;
- int lowThreshold = 0;
- const int max_lowThreshold = 100;
- const int ratio = 3;
- const int kernel_size = 3;
- const char* window_name = "Edge Map";
- //![variables]
- /**
- * @function CannyThreshold
- * @brief Trackbar callback - Canny thresholds input with a ratio 1:3
- */
- static void CannyThreshold(int, void*)
- {
- //![reduce_noise]
- /// Reduce noise with a kernel 3x3
- blur( src_gray, detected_edges, Size(3,3) );
- //![reduce_noise]
- //![canny]
- /// Canny detector
- Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );
- //![canny]
- /// Using Canny's output as a mask, we display our result
- //![fill]
- dst = Scalar::all(0);
- //![fill]
- //![copyto]
- src.copyTo( dst, detected_edges);
- //![copyto]
- //![display]
- imshow( window_name, dst );
- //![display]
- }
- /**
- * @function main
- */
- int main( int argc, char** argv )
- {
- //![load]
- CommandLineParser parser( argc, argv, "{@input | fruits.jpg | input image}" );
- src = imread( samples::findFile( parser.get<String>( "@input" ) ), IMREAD_COLOR ); // Load an image
- if( src.empty() )
- {
- std::cout << "Could not open or find the image!\n" << std::endl;
- std::cout << "Usage: " << argv[0] << " <Input image>" << std::endl;
- return -1;
- }
- //![load]
- //![create_mat]
- /// Create a matrix of the same type and size as src (for dst)
- dst.create( src.size(), src.type() );
- //![create_mat]
- //![convert_to_gray]
- cvtColor( src, src_gray, COLOR_BGR2GRAY );
- //![convert_to_gray]
- //![create_window]
- namedWindow( window_name, WINDOW_AUTOSIZE );
- //![create_window]
- //![create_trackbar]
- /// Create a Trackbar for user to enter threshold
- createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold );
- //![create_trackbar]
- /// Show the image
- CannyThreshold(0, 0);
- /// Wait until user exit program by pressing a key
- waitKey(0);
- return 0;
- }
|