From 442f6b4100e2c1efeb97a17da74308ab00aa654c Mon Sep 17 00:00:00 2001 From: Ana Huaman Date: Mon, 11 Jul 2011 22:03:23 +0000 Subject: [PATCH] Added cornerSubPix_Demo.cpp tutorial sample code --- .../TrackingMotion/cornerSubPix_Demo.cpp | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 samples/cpp/tutorial_code/TrackingMotion/cornerSubPix_Demo.cpp diff --git a/samples/cpp/tutorial_code/TrackingMotion/cornerSubPix_Demo.cpp b/samples/cpp/tutorial_code/TrackingMotion/cornerSubPix_Demo.cpp new file mode 100644 index 0000000000..0e6ef5551b --- /dev/null +++ b/samples/cpp/tutorial_code/TrackingMotion/cornerSubPix_Demo.cpp @@ -0,0 +1,105 @@ +/** + * @function cornerSubPix_Demo.cpp + * @brief Demo code for refining corner locations + * @author OpenCV team + */ + +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/imgproc/imgproc.hpp" +#include +#include +#include + +using namespace cv; +using namespace std; + +/// Global variables +Mat src, src_gray; + +int maxCorners = 10; +int maxTrackbar = 25; + +RNG rng(12345); +char* source_window = "Image"; + +/// Function header +void goodFeaturesToTrack_Demo( int, void* ); + +/** + * @function main + */ +int main( int argc, char** argv ) +{ + /// Load source image and convert it to gray + src = imread( argv[1], 1 ); + cvtColor( src, src_gray, CV_BGR2GRAY ); + + /// Create Window + namedWindow( source_window, CV_WINDOW_AUTOSIZE ); + + /// Create Trackbar to set the number of corners + createTrackbar( "Max corners:", source_window, &maxCorners, maxTrackbar, goodFeaturesToTrack_Demo ); + + imshow( source_window, src ); + + goodFeaturesToTrack_Demo( 0, 0 ); + + waitKey(0); + return(0); +} + +/** + * @function goodFeaturesToTrack_Demo.cpp + * @brief Apply Shi-Tomasi corner detector + */ +void goodFeaturesToTrack_Demo( int, void* ) +{ + if( maxCorners < 1 ) { maxCorners = 1; } + + /// Parameters for Shi-Tomasi algorithm + vector corners; + double qualityLevel = 0.01; + double minDistance = 10; + int blockSize = 3; + bool useHarrisDetector = false; + double k = 0.04; + + /// Copy the source image + Mat copy; + copy = src.clone(); + + /// Apply corner detection + goodFeaturesToTrack( src_gray, + corners, + maxCorners, + qualityLevel, + minDistance, + Mat(), + blockSize, + useHarrisDetector, + k ); + + + /// Draw corners detected + cout<<"** Number of corners detected: "<