该代码是在VS2010平台上结合OpenCV编写,对于初学者来说有比较大的帮助。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 122368 2018-04-10 15:28 jixianyuesuDebugjixianyuesu.exe
文件 733140 2018-04-10 15:28 jixianyuesuDebugjixianyuesu.ilk
文件 1231872 2018-04-10 15:28 jixianyuesuDebugjixianyuesu.pdb
文件 44957696 2018-04-10 15:27 jixianyuesuipchjixianyuesu-28353e67jixianyuesu-233a92aa.ipch
文件 76590 2018-03-21 16:16 jixianyuesujixianyuesu1.jpg
文件 59827 2018-04-09 16:39 jixianyuesujixianyuesu11.jpg
文件 71261 2018-04-10 15:28 jixianyuesujixianyuesu111.jpg
文件 83052 2018-03-21 16:16 jixianyuesujixianyuesu2.jpg
文件 75396 2018-04-09 16:40 jixianyuesujixianyuesu22.jpg
文件 97309 2018-04-10 15:29 jixianyuesujixianyuesu222.jpg
文件 8637 2018-04-07 20:30 jixianyuesujixianyuesu3.png
文件 8236 2018-04-07 20:30 jixianyuesujixianyuesu4.png
文件 854 2018-04-10 15:27 jixianyuesujixianyuesuDebugcl.command.1.tlog
文件 15956 2018-04-10 15:27 jixianyuesujixianyuesuDebugCL.read.1.tlog
文件 628 2018-04-10 15:27 jixianyuesujixianyuesuDebugCL.write.1.tlog
文件 3224 2018-04-10 15:27 jixianyuesujixianyuesuDebugjixianyuesu.Build.CppClean.log
文件 406 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.exe.embed.manifest
文件 472 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.exe.embed.manifest.res
文件 381 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.exe.intermediate.manifest
文件 100 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.lastbuildstate
文件 5925 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.log
文件 475470 2018-04-10 15:27 jixianyuesujixianyuesuDebugjixianyuesu.obj
文件 0 2018-04-10 15:27 jixianyuesujixianyuesuDebugjixianyuesu.write.1.tlog
文件 212 2018-04-10 15:27 jixianyuesujixianyuesuDebugjixianyuesu_manifest.rc
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebuglink-cvtres.read.1.tlog
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebuglink-cvtres.write.1.tlog
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebuglink.7180-cvtres.read.1.tlog
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebuglink.7180-cvtres.write.1.tlog
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebuglink.7180.read.1.tlog
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebuglink.7180.write.1.tlog
............此处省略27个文件信息
#include
#include “opencv2/core/core.hpp“
#include “opencv2/features2d/features2d.hpp“
#include “opencv2/highgui/highgui.hpp“
#include “opencv2/nonfree/nonfree.hpp“
#include
#include
using namespace std;
using namespace cv;
static void help()
{
printf(“
This program demonstrates using features2d detector descriptor extractor and simple matcher
“
“Using the SURF desriptor:
“
“
“
“Usage:
matcher_simple
“);
}
int main(int argc char** argv)
{
//if(argc != 3)
//{
// help();
// return -1;
//}
Mat img1 = imread(“111.jpg“ CV_LOAD_IMAGE_GRAYSCALE);
Mat img2 = imread(“222.jpg“ CV_LOAD_IMAGE_GRAYSCALE);
if(img1.empty() || img2.empty())
{
printf(“Can‘t read one of the images
“);
return -1;
}
// detecting keypoints
SurfFeatureDetector detector(1000);
vector keypoints1 keypoints2;
detector.detect(img1 keypoints1);
detector.detect(img2 keypoints2);
// computing descriptors
SurfDescriptorExtractor extractor;
Mat descriptors1 descriptors2;
extractor.compute(img1 keypoints1 descriptors1);
extractor.compute(img2 keypoints2 descriptors2);
// matching descriptors
BFMatcher matcher(NORM_L2);
vector matches;
matcher.match(descriptors1 descriptors2 matches);
// drawing the results
namedWindow(“matches“ 1);
Mat img_matches0img_matches1;
drawMatches(img1 keypoints1 img2 keypoints2 matches img_matches0);
//for(int i=0;i //{
// //if(abs((keypoints1[matches[i].queryIdx].pt.y-keypoints2[matches[i].trainIdx].pt.y)>5)
// //{
// //}
// //cout< // Point2f pt1pt2;
// pt1=keypoints1[matches[i].queryIdx].pt;
// pt2=keypoints2[matches[i].trainIdx].pt;
// if(abs(pt1.y-pt2.y)>5)
// {
// matches[i].distance=100;
// }
//}
// drawMatches(img1 keypoints1 img2 keypoints2 matches img_matches1);
// 分配空间
int ptCount = (int)matches.size();
Mat p1(ptCount 2 CV_32F);
Mat p2(ptCount 2 CV_32F);
// 把Keypoint转换为Mat
Point2f pt;
for (int i=0; i {
pt = keypoints1[matches[i].queryIdx].pt;
p1.at(i 0) = pt.x;
p1.at(i 1) = pt.y;
pt = keypoints2[matches[i].trainIdx].pt;
p2.at(i 0) = pt.x;
p2.at(i 1) = pt.y;
}
// 用RANSAC方法计算F
// Mat m_Fundamental;
// 上面这个变量是基本矩阵
vector m_RANSACStatus;
// 上面这个变量已经定义过,用于存储RANSAC后每个点的状态
//m_Fundamental = findFundamentalMat(p1 p2 m_RANSACStatus FM_RANSAC);
Mat m_Fundamental=findFundamentalMat(p1 p2 m_RANSACStatus FM_RANSAC);
cout< // 计算野点个数
int OutlinerCount = 0;
for (int i=0; i {
if (m_RANSACStatus[i] == 0) // 状态为0表示野点
{
OutlinerCount++;
}
}
// 计
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 122368 2018-04-10 15:28 jixianyuesuDebugjixianyuesu.exe
文件 733140 2018-04-10 15:28 jixianyuesuDebugjixianyuesu.ilk
文件 1231872 2018-04-10 15:28 jixianyuesuDebugjixianyuesu.pdb
文件 44957696 2018-04-10 15:27 jixianyuesuipchjixianyuesu-28353e67jixianyuesu-233a92aa.ipch
文件 76590 2018-03-21 16:16 jixianyuesujixianyuesu1.jpg
文件 59827 2018-04-09 16:39 jixianyuesujixianyuesu11.jpg
文件 71261 2018-04-10 15:28 jixianyuesujixianyuesu111.jpg
文件 83052 2018-03-21 16:16 jixianyuesujixianyuesu2.jpg
文件 75396 2018-04-09 16:40 jixianyuesujixianyuesu22.jpg
文件 97309 2018-04-10 15:29 jixianyuesujixianyuesu222.jpg
文件 8637 2018-04-07 20:30 jixianyuesujixianyuesu3.png
文件 8236 2018-04-07 20:30 jixianyuesujixianyuesu4.png
文件 854 2018-04-10 15:27 jixianyuesujixianyuesuDebugcl.command.1.tlog
文件 15956 2018-04-10 15:27 jixianyuesujixianyuesuDebugCL.read.1.tlog
文件 628 2018-04-10 15:27 jixianyuesujixianyuesuDebugCL.write.1.tlog
文件 3224 2018-04-10 15:27 jixianyuesujixianyuesuDebugjixianyuesu.Build.CppClean.log
文件 406 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.exe.em
文件 472 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.exe.em
文件 381 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.exe.intermediate.manifest
文件 100 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.lastbuildstate
文件 5925 2018-04-10 15:28 jixianyuesujixianyuesuDebugjixianyuesu.log
文件 475470 2018-04-10 15:27 jixianyuesujixianyuesuDebugjixianyuesu.obj
文件 0 2018-04-10 15:27 jixianyuesujixianyuesuDebugjixianyuesu.write.1.tlog
文件 212 2018-04-10 15:27 jixianyuesujixianyuesuDebugjixianyuesu_manifest.rc
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebugli
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebugli
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebugli
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebugli
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebugli
文件 2 2018-04-10 15:28 jixianyuesujixianyuesuDebugli
............此处省略27个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)