基于opencv的图像拼接(一): sift特征点提取
来源:互联网 发布:电脑专业录音软件 编辑:程序博客网 时间:2024/05/17 05:19
网上有很多关于sift理论知识的介绍,在这里就不赘述了;
附上有关sift特征点提取的相关程序,需要注意的如下:
1. 使用opencv封装好的sift模块时, 需要加上
#include <opencv2/nonfree/nonfree.hpp>
2. SiftFeatureDetector 和 SiftDescriptorExtractor 意义不同,
SiftFeatureDetector 是为提取特征点位置和角度,一般保存到keypoint中,多用于在图中显现特征点;
SiftDescriptorExtractor是真正在后续实验中要用到的特征向量;
在程序中也会有专门讲解。
#include <iostream>#include <opencv2/highgui/highgui.hpp>#include <opencv2/nonfree/nonfree.hpp> //sift算子需要用到的#include <opencv2/legacy/legacy.hpp>#include <vector>using namespace std;using namespace cv;Mat cacSIFTFeatureAndCompare(Mat srcImage1, Mat srcImage2 ){ //灰度及归一化Mat grayMat1, grayMat2;cvtColor(srcImage1, grayMat1, CV_BGR2GRAY);normalize(grayMat1, grayMat1, 0, 255, NORM_MINMAX);cvtColor(srcImage2, grayMat2, CV_BGR2GRAY);normalize(grayMat2, grayMat2, 0, 255, NORM_MINMAX);//定义sift描述子SiftFeatureDetector detector;SiftDescriptorExtractor extractor;//特征提取器//特征点检测vector<KeyPoint>keypoint1;vector<KeyPoint>keypoint2;detector.detect(grayMat1, keypoint1);//提取到特征点的位置和角度,保存在keypointdetector.detect(grayMat2, keypoint2);//计算特征点描述子Mat descriptions1, descriptions2;extractor.compute(grayMat1, keypoint1, descriptions1);extractor.compute(grayMat2, keypoint2, descriptions2);//做实验中要用到的Mat src_description1, src_description2;drawKeypoints(srcImage1,keypoint1,src_description1);drawKeypoints(srcImage2,keypoint2,src_description2);imshow("pic1_descriptions", src_description1);imshow("pic2_descriptions", src_description2);//特征点匹配 匹配用到的是比较简单的匹配vector<DMatch>matches;BruteForceMatcher<L2<float>>matcher;matcher.match(descriptions1,descriptions2,matches);//二分排序int N = 80;nth_element(matches.begin(), matches.begin()+N-1,matches.end());matches.erase(matches.begin()+N, matches.end());//绘制检测结果Mat matchMat;drawMatches(srcImage1,keypoint1,srcImage2,keypoint2,matches,matchMat);return matchMat;}int main(){Mat srcImage1 = imread("E:\\my\\pic_save\\angle_y1.jpg", 1);Mat srcImage2 = imread("E:\\my\\pic_save\\angle_x1.jpg", 1);Mat resSiftMatchMat = cacSIFTFeatureAndCompare(srcImage1,srcImage2);imshow("resSiftMatchMat", resSiftMatchMat);waitKey(0);return 0;}
阅读全文
1 0
- 基于opencv的图像拼接(一): sift特征点提取
- 基于SIFT特征的全景图像拼接
- 基于SIFT特征的全景图像拼接
- 基于SIFT特征的全景图像拼接
- 基于SIFT特征的全景图像拼接
- 基于SIFT特征的全景图像拼接
- 基于SIFT特征的全景图像拼接
- 基于SIFT特征的全景图像拼接
- 基于SIFT特征的全景图像拼接
- 基于SIFT特征的全景图像拼接
- 基于SIFT特征的全景图像拼接
- 【OpenCV-图像处理】用sift特征点算法和ransac算法进行多幅图像的拼接
- opencv 特征点提取算法 SIFT SURF ORB FAST LBP学习(一)
- OpenCV实现SfM(一):双目三维重建(包含SIFT特征点提取)
- OpenCV SIFT特征点提取算法
- 特征点匹配应用——图像拼接的原理与基于OpenCV的实现
- OpenCV中提取SIFT特征点、图像匹配、图像配准
- Opencv实现图像无缝拼接,Sift查找特征点,Flann进行匹配
- 腾讯we大会2017早鸟票开抢啦!!
- windows下的Zcash钱包(ZEC钱包)-zcash4win 1.0.11
- 人脸识别
- gdal图像分块处理
- ngrx api
- 基于opencv的图像拼接(一): sift特征点提取
- jdbc的工具类封装
- 时间调度
- 织梦分页“共0页/0条记录”修改
- 入门 Vue.js会碰到的常见问题
- 002、java数据类型
- 工科硕士论文评阅面面观
- centos7firewall防火墙操作
- Mysql only_full_group_by以及其他关于sql_mode原因报错详细解决方案