OpenCV提取SIFT特征
来源:互联网 发布:淘宝什么时候开始的 编辑:程序博客网 时间:2024/05/16 17:15
本文参考了博文http://blog.csdn.net/abcjennifer/article/details/7639681中的代码,有改动。
// FeatureDetector.cpp : Defines the entry point for the console application.// // Created by Rachel on 14-1-12. // Copyright (c) 2013年 ZJU. All rights reserved. // #include "stdafx.h"#include "highgui.h"#include "cv.h"#include "vector"#include "opencv\cxcore.hpp"#include "iostream"#include "opencv.hpp"#include <opencv2/nonfree/features2d.hpp>//#include "nonfree.hpp"//#include "showhelper.h"using namespace cv;using namespace std;int _tmain(int argc, _TCHAR* argv[]){//Load Image Mat c_src1 = imread( "F:\\Pics\\15.jpg");//OriImgMat c_src2 = imread("F:\\Pics\\16.jpg");//OriImgMat src1 = imread( "F:\\Pics\\15.jpg", CV_LOAD_IMAGE_GRAYSCALE);//GrayscaleMat src2 = imread( "F:\\Pics\\16.jpg", CV_LOAD_IMAGE_GRAYSCALE);//Grayscaleif( !src1.data || !src2.data ){ std::cout<< " --(!) Error reading images " << std::endl; return -1; }//sift feature detectSiftFeatureDetector detector;std::vector<KeyPoint> kp1, kp2;detector.detect( src1, kp1 );detector.detect( src2, kp2 );cout<<"The number of keypoints of Img1: "<<kp1.size()<<endl;cout<<"The number of keypoints of Img2: "<<kp2.size()<<endl;SiftDescriptorExtractor extractor;Mat des1,des2;//descriptorextractor.compute(src1,kp1,des1);extractor.compute(src2,kp2,des2);cout<<"The size of SIFT descriptor of Img1: "<<des1.size()<<endl;cout<<"The size of SIFT descriptor of Img2: "<<des2.size()<<endl;Mat res1,res2; int drawmode = DrawMatchesFlags::DRAW_RICH_KEYPOINTS;drawKeypoints(c_src1,kp1,res1,Scalar::all(-1),drawmode);//在内存中画出特征点drawKeypoints(c_src2,kp2,res2,Scalar::all(-1),drawmode);//write the size of features on pictureCvFont font; double hScale=1; double vScale=1; int lineWidth=2;// 相当于写字的线条 cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX|CV_FONT_ITALIC, hScale,vScale,0,lineWidth);//初始化字体,准备写到图片上的 // cvPoint 为起笔的x,y坐标 IplImage* transimg1 = cvCloneImage(&(IplImage) res1);IplImage* transimg2 = cvCloneImage(&(IplImage) res2);char str1[20],str2[20];sprintf(str1,"%d",kp1.size());sprintf(str2,"%d",kp2.size());const char* str = str1;cvPutText(transimg1,str1,cvPoint(280,230),&font,CV_RGB(255,0,0));//在图片中输出字符 str = str2;cvPutText(transimg2,str2,cvPoint(280,230),&font,CV_RGB(255,0,0));//在图片中输出字符 //imshow("Description 1",res1);cvShowImage("descriptor1",transimg1);cvShowImage("descriptor2",transimg2);BFMatcher matcher(NORM_L2);vector<DMatch> matches;matcher.match(des1,des2,matches);Mat img_match;drawMatches(src1,kp1,src2,kp2,matches,img_match);//,Scalar::all(-1),Scalar::all(-1),vector<char>(),drawmode);cout<<"The number of matched points: "<<matches.size()<<endl;imshow("matches",img_match);cvWaitKey();cvDestroyAllWindows();return 0;}
0 0
- OpenCV提取SIFT特征
- Opencv SIFT特征提取
- 【OpenCV】SIFT特征提取
- opencv提取SIFT特征
- opencv 提取SIFT特征的程序
- 3. opencv进行SIFT特征提取
- Python-OpenCV:sift(),SURF() 特征提取
- opencv-python 提取sift特征并匹配
- Opencv Sift算子特征提取与匹配
- Opencv Sift算子特征提取与匹配
- OpenCV SIFT特征点提取算法
- SIFT特征提取及其opencv实现
- Opencv Sift算子特征提取与匹配
- OpenCV SURF SIFT特征提取及RANSAC算法
- 使用OPENCV自带的sift提取特征
- Opencv中sift特征提取与匹配代码
- Opencv实现:SIFT特征提取+RANSAC剔除误匹配点
- 使用OPENCV自带的sift提取特征
- Java设计模式之Bridge模式
- 黑马程序员——面向对象(二)
- 经典死锁案例-哲学家就餐
- HDU多校赛第9场 HDU 4965Fast Matrix Calculation【矩阵运算+数学小知识】
- 基于JQuery实现表单元素值的回写
- OpenCV提取SIFT特征
- 只有原创和翻译文章才能推荐到首页
- 《用对时间做对事》笔记
- 博客搬家博客搬家
- hdu 4965 Fast Matrix Calculation【矩阵快速幂】
- PA模块常用表
- 如何去掉空格
- 第一次动手写java的简单代码,实现输出一个空心菱形。
- 装置文章不多