-
大小: 25KB文件類(lèi)型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2024-01-30
- 語(yǔ)言: C/C++
- 標(biāo)簽:
資源簡(jiǎn)介
這段代碼是自己寫(xiě)的,會(huì)比opencv的簡(jiǎn)單易懂。提取了特征點(diǎn)后,進(jìn)行了暴力匹配。暴力匹配的代碼也是自己寫(xiě)的,看完后應(yīng)該對(duì)特征點(diǎn)的提取和匹配有個(gè)直觀(guān)的認(rèn)識(shí)。
代碼片段和文件信息
//
//?Created?by?高翔?on?2017/12/19.
//?本程序演示ORB是如何提取、計(jì)算和匹配的
//
#include?
#include?
#include?
#include?
#include?
//#include?
//#include?
#include?
#include?
using?namespace?std;
using?namespace?cv;
//?global?variables
string?first_file?=?“1.png“;
string?second_file?=?“2.png“;
typedef?vector?DescType;
vector?good_keypoints1;
vector?good_desc;
vector?good_keypoints2;
vector?good_desc2;
const?double?pi?=?3.1415926;????//?pi
void?computeAngle(const?cv::Mat?&image?vector?&keypointsvector?&good_points);
typedef?vector?DescType;??//?type?of?descriptor?256?bools
void?computeORBDesc(const?cv::Mat?&image?vector?&keypoints?vector?&descvector?&out_keypointsvector?&out_desc);
void?bfMatch(const?vector?&desc1?const?vector?&desc2?vector?&matches);
int?get_distance(const?DescType?&desc_1?const?DescType?&desc_2);
void?bfMatch(const?vector?&desc1?const?vector?&desc2?vector?&matches);
int?get_distance(const?DescType?&desc_1?const?DescType?&desc_2);
vector?good_points1;
vector?good_points2;
int?main(int?argc?char?**argv)?{
????//?load?image
????cv::Mat?first_image?=?cv::imread(first_file?0);????//?load?grayscale?image
????cv::Mat?second_image?=?cv::imread(second_file?0);??//?load?grayscale?image
????//?detect?FAST?keypoints?using?threshold=40
????vector?keypoints;
????cv::FAST(first_image?keypoints?40);
????cout?<“Fastkeypoints:?“?<????//?compute?angle?for?each?keypoint
????computeAngle(first_image?keypointsgood_points1);//
cout?<“keyPoints?=?“?< cout?<“good_Points?=?“?< vector?descriptors1;
computeORBDesc(first_image?good_points1?descriptors1good_keypoints1good_desc);
cout?<“descriptor1?=?“?<
?vector?keypoints2;
????cv::FAST(second_image?keypoints2?40);
????cout?<“Fastkeypoints:?“?<????//?compute?angle?for?each?keypoint
????computeAngle(second_image?keypoints2good_points2);//
cout?<“keyPoints?=?“?< cout?<“good_Points?=?“?< vector?descriptors2;
computeORBDesc(second_image?good_points2?descriptors2good_keypoints2good_desc2);
cout?<“descriptor2?=?“?< vector?matches;
bfMatch(good_desc?good_desc2?matches);
cout?<“matchrs?=?“?<
Mat?img_mathes;
//for?(int?i?=?0?;?i //{
// cout?<“image1_index?=?“?< // c
評(píng)論
共有 條評(píng)論