opencv-shi-tomasi 角点检测

来源:互联网 发布:linux 安全删除文件 编辑:程序博客网 时间:2024/04/29 03:18
/** * @function goodFeaturesToTrack_Demo.cpp * @brief Demo code for detecting corners using Shi-Tomasi method * @author OpenCV team */#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace cv;using namespace std;/// Global variablesMat src, src_gray;int maxCorners = 23;int maxTrackbar = 100;RNG rng(12345);const char* source_window = "Image";/// Function headervoid goodFeaturesToTrack_Demo( int, void* );/** * @function main */int main( int, char** argv ){  /// Load source image and convert it to gray  src = imread( argv[1], 1 );  cvtColor( src, src_gray, COLOR_BGR2GRAY );  /// Create Window  namedWindow( source_window, 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<Point2f> 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: "<<corners.size()<<endl;  int r = 4;  for( size_t i = 0; i < corners.size(); i++ )     { circle( copy, corners[i], r, Scalar(rng.uniform(0,255), rng.uniform(0,255), rng.uniform(0,255)), -1, 8, 0 ); }  /// Show what you got  namedWindow( source_window, WINDOW_AUTOSIZE );  imshow( source_window, copy );}





原创粉丝点击