from http://blog.sina.com.cn/s/blog_96b836170102w1ki.html 本博文原理部分简述,重点在编程实现(程序参考并修改了网上资料,网上程序不一定能运行,但本文程序亲测能跑)。 Shi-Tomasi 算法是Harris 算法的改进。Harris 算法最原始的定义是将矩阵 M 的行列式值与 M 的迹相减,再将差值同预先给定的阈值进行比较。后来Shi 和Tomasi 提出改进的方法,若两个特征值中较小的一个大于最小阈值,则会得到强角点。 //ShiTomas #include "stdafx.h" #include #include #include #include "opencv2/opencv.hpp" #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp"
#include
"opencv2/features2d/features2d.hpp" #include #include #include #include
using namespace cv; using namespace std;
/// 全局变量 Mat src, srcGray;
int maxCorners
=
23; int maxCornersThresh = 1000; //角点个数最大值的上限(滑动条范围0-1000)
RNG rng(12345); char* sourceWindow = "src";
/// 角点检测函数声明 void doGoodFeaturesToTrack(int, void*);
int main(int argc, char** argv) {
}
/// 角点检测函数实现:标示出每个角点位置 void doGoodFeaturesToTrack(int, void*) {
} 效果图: |
|