代码示例:
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include<iostream> #include<vector> using namespace cv; using namespace std; #define WINDOW_NAME "Shi-Tomasi角点检测" Mat src, gray; ; ; RNG rng(); //滚动条回调函数 void onGoodFeaturesToTrack(int, void*){ ){ maxCornerNum = ; } //参数准备 vector<Point2d> corners; double qualityLevel=0.01;//角点检测可接受的最小特征值 ;//角点之间的最小距离 ;//计算导数自相关矩阵时的指定的领域范围 double k = 0.04;//权重系数 Mat copy = src.clone(); //进行Shi-Tomasi角点检测 goodFeaturesToTrack(gray, corners, maxCornerNum, qualityLevel, minDistance, Mat(), blockSize, false, k); //输出文字信息 cout << "此次检测到的角点数量为:" << corners.size() << endl; //绘制检测到的角点 ; ; i < corners.size(); i++){ circle(copy, corners[i], r, Scalar(,,), -, , ); } imshow(WINDOW_NAME, copy); } int main(){ src = imread(); cvtColor(src, gray, COLOR_BGR2GRAY); namedWindow(WINDOW_NAME, WINDOW_AUTOSIZE); createTrackbar("最大角点数", WINDOW_NAME, &maxCornerNum, maxTrackbarNum, onGoodFeaturesToTrack); imshow(WINDOW_NAME, src); onGoodFeaturesToTrack(, ); waitKey(); ; }
效果: