代码选自:http://blog.csdn.net/zhaocj/article/details/42124473
SIFT算法是用来检测图像中特征点的,
代码如下:
opencv版本:2.4.9
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/nonfree/nonfree.hpp"using namespace cv;int main()
{Mat img = imread("test.jpg");SIFT sift;//实例化SIFT类,如果代码改为SIFT sift(100);则只检测100个特征点vector<KeyPoint> key_points;//特征点Mat descriptors, mascara;Mat output_img;//输出图像矩阵sift(img, mascara, key_points, descriptors);//执行sift运算//在输出图像上绘制特征点drawKeypoints(img, //输入图像key_points, //特征点矢量output_img, //输出图像Scalar::all(-1), //绘制特征点的颜色, 随机颜色//以特征点为中心画圆,圆半径表示特征点的大小,直线表示特征点的方向DrawMatchesFlags::DRAW_RICH_KEYPOINTS);namedWindow("SIFT");imshow("SIFT",output_img);waitKey(0);return 0;
}
运行结果如下: