#include<iostream>
#include<opencv2/opencv.hpp>
#include<vector>
using namespace cv;
using namespace std;
int g_nMinDistance = 10;
int g_nMaxValue = 200;
Mat grayImage;
Mat srcImage;
void on_Track(int, void*)
{
if (g_nMaxValue <= 1)
g_nMaxValue = 1;
//开始进行强角点检测
//先配置需要的函数参数
vector<Point2f> dstPoint2f;
goodFeaturesToTrack(grayImage, dstPoint2f, g_nMaxValue, 0.01, g_nMinDistance, Mat(), 3);
//遍历每个点,进行绘制,便于显示
Mat dstImage;
srcImage.copyTo(dstImage);
for (int i = 0; i < (int)dstPoint2f.size(); i++)
{
circle(dstImage, dstPoint2f[i], 3, Scalar(theRNG().uniform(0, 255), theRNG().uniform(0, 255), theRNG().uniform(0, 255))
, 2, 8);
}
imshow("【检测到的角点图】", dstImage);
}
int main()
{
srcImage = imread("building.jpg");
namedWindow("【原图】");
imshow("【原图】", srcImage);
//因为强角点检测函数的输入图像是一个单通道的图像,所以,先对原图像进行图像空间的转换
cvtColor(srcImage, grayImage, CV_BGR2GRAY);
createTrackbar("MaxCor", "【原图】", &g_nMaxValue, 1000, on_Track);
on_Track(0, 0);
createTrackbar("MinDis", "【原图】", &g_nMinDistance, 100, on_Track);
on_Track(0, 0);
waitKey(0);
return 0;
}