资源简介
图像匹配是指通过一定的匹配算法在两幅或多幅图像之间识别同名点,如二维图像匹配中通过比较目标区和搜索区中相同大小的窗口的相关系数,取搜索区中相关系数最大所对应的窗口中心点作为同名点。其实质是在基元相似性的条件下,运用匹配准则的最佳搜索问题。
代码片段和文件信息
// 3.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
int _tmain(int argc _TCHAR* argv[])
{
return 0;
}
#include “opencv2/core/core.hpp“
#include “opencv2/features2d/features2d.hpp“
#include “opencv2/highgui/highgui.hpp“
#include “opencv2/calib3d/calib3d.hpp“
#include “opencv2/nonfree/nonfree.hpp“
#include
#include
using namespace cv;
using namespace std;
int main( )
{
//【0】改变console字体颜色
system(“color 1F“);
//【1】载入原始图片
Mat srcImage1 = imread( “A1.jpg“ 1 );
Mat srcImage2 = imread( “A2.jpg“ 1 );
Mat copysrcImage1=srcImage1.clone();
Mat copysrcImage2=srcImage2.clone();
if( !srcImage1.data || !srcImage2.data )
{ printf(“读取图片错误,请确定目录下是否有imread函数指定的图片存在~! \n“); return false; }
//【2】使用SURF算子检测关键点
int minHessian = 400;//SURF算法中的hessian阈值
SurfFeatureDetector detector( minHessian );//定义一个SurfFeatureDetector(SURF) 特征检测类对象
vector keypoints_object keypoints_scene;//vector模板类,存放任意类型的动态数组
//【3】调用detect函数检测出SURF特征关键点,保存在vector容器中
detector.detect( srcImage1 keypoints_object );
detector.detect( srcImage2 keypoints_scene );
////SIFT特征检测
// SiftFeatureDetector detector; //定义特点点检测器
// //vector keypoint01keypoint02;//定义两个容器存放特征点
// detector.detect(srcImage1keypoints_object);
// detector.detect(srcImage2keypoints_scene);
//【4】计算描述符(特征向量)
SurfDescriptorExtractor extractor;
Mat descriptors_object descriptors_scene;
extractor.compute( srcImage1 keypoints_object descriptors_object );
extractor.compute( srcImage2 keypoints_scene descriptors_scene );
////【5】使用FLANN匹配算子进行匹配
//FlannbasedMatcher matcher;
//vector< DMatch > matches;
//matcher.match( descriptors_object descriptors_scene matches );
BruteForceMatcher> matcher;
vector matches;
matcher.match(descriptors_objectdescriptors_scenematches);
double max_dist = 0; double min_dist = 100;//最小距离和最大距离
//【6】计算出关键点之间距离的最大值和最小值
for( int i = 0; i < descriptors_object.rows; i++ )
{
double dist = matches[i].distance;
if( dist < min_dist ) min_dist = dist;
if( dist > max_dist ) max_dist = dist;
}
printf(“>Max dist 最大距离 : %f \n“ max_dist );
printf(“>Min dist 最小距离 : %f \n“ min_dist );
//【7】存下匹配距离小于3*min_dist的点对
std::vector< DMatch > good_matches;
for( int i = 0; i < descriptors_object.rows; i++ )
{
if( matches[i].distance < 3*min_dist )
{
good_matches.push_back( matches[i]);
}
}
//绘制出匹配到的关键点
Mat img_matches;
drawMatches( srcImage1 keypoints_object srcImage2 keypoints_scene
good_matches img_matches Scalar::all(-1) Scalar::all(-1)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-08 20:04 jingquepipei\
目录 0 2017-11-10 09:56 jingquepipei\3\
文件 6099 2017-11-18 16:45 jingquepipei\3\3.cpp
文件 4356 2017-11-10 09:55 jingquepipei\3\3.vcxproj
文件 1305 2017-11-10 09:55 jingquepipei\3\3.vcxproj.filters
文件 143 2017-11-10 09:55 jingquepipei\3\3.vcxproj.user
文件 30411 2009-04-23 20:42 jingquepipei\3\A1.jpg
文件 26986 2009-04-23 20:43 jingquepipei\3\A2.jpg
目录 0 2017-12-08 20:04 jingquepipei\3\Debug\
文件 406 2017-11-10 09:56 jingquepipei\3\Debug\3.exe.em
文件 472 2017-11-18 15:59 jingquepipei\3\Debug\3.exe.em
文件 381 2017-11-18 16:45 jingquepipei\3\Debug\3.exe.intermediate.manifest
文件 52 2017-12-08 20:04 jingquepipei\3\Debug\3.lastbuildstate
文件 848 2017-12-08 20:04 jingquepipei\3\Debug\3.log
文件 415813 2017-11-18 16:45 jingquepipei\3\Debug\3.obj
文件 1179648 2017-11-18 15:59 jingquepipei\3\Debug\3.pch
文件 192 2017-11-10 09:56 jingquepipei\3\Debug\3_manifest.rc
文件 19068 2017-11-18 16:45 jingquepipei\3\Debug\CL.read.1.tlog
文件 1000 2017-11-18 16:45 jingquepipei\3\Debug\CL.write.1.tlog
文件 2522 2017-11-18 16:45 jingquepipei\3\Debug\cl.command.1.tlog
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
文件 2 2017-11-18 16:45 jingquepipei\3\Debug\li
............此处省略37个文件信息
- 上一篇:assetBundle打包工具
- 下一篇:dsp28335官方例程
相关资源
- opencv获取图像像素值
- 动作识别 Hu距 SVM opencv2.4.9 VS2013
- createsamples.exe和haartraining.exe及所需d
- opencv车牌识别系统可直接运行
- 基于opencv与yolo的目标识别案例
- svm颜色分类
- QT OPENCV车牌识别 识别结果输出到Tex
- opencv3.2交叉编译移植笔记
- OpenCV人脸识别290071
- openCV库文件卷3
- opencv运动目标跟踪
- opencv基于颜色直方图进行模板图像匹
- 双目标定以及双目测距程序.rar
- OpenCV插件UE4
- opencv_world420.dll
- OpenCV 4.2.0 Visual Studio 2017 32位 版本
- OpenCV实现的图像2D转3D Image-2D-to-3D.ra
- 一幅图片中画两个矩形
- VS2015编译好的opencv3.4.1+contrib3.4.1
- 基于opencv的双目相机标定代码
- 图片合成视频OpenCV
- 视频人脸追踪
- opencv2410forMinGw
- Tesseract 4.0 for VS2015及OpenCV数字识别程
- Computer Vision with OpenCV3 and Qt5完整版
- pb模型转pbtxtopencv调用
- Computer Vision with OpenCV 3 and Qt5
- 基于hog+pca+svm行人检测源码
- Kmeans的opencv实现
- 基于VS2017+opencv3.4.3的立体匹配SGBM与
评论
共有 条评论