当前位置:网站首页>C + + opencv4.3 sift matching
C + + opencv4.3 sift matching
2020-11-08 16:17:00 【Spiritual】
c++ opencv4.3 sift matching
main.cpp
int main()
{
vector<KeyPoint> keypoints1, keypoints2;
Mat img1,img2,descriptors1, descriptors2;
int numFeatures = 500;// The maximum number of feature points
int numlines = 50;// front 20 The best match
string path1 = "1.jpg";// picture 1
string path2 = "2.jpg";// picture 2
getDescriptors(numFeatures, path1, keypoints1, descriptors1, img1);// Drawing pictures 1 Characteristic point
getDescriptors(numFeatures, path2, keypoints2, descriptors2, img2);// Drawing pictures 2 Characteristic point
drawMatch(img1, keypoints1, descriptors1, img2, keypoints2, descriptors2, numlines);// Draw match points
return 0;
}
utils.cpp
#include "utils.h"
// Get feature point information
void getDescriptors( int numFeatures, string path, vector<KeyPoint>& keypoints, Mat& descriptors, Mat& img) {
img = imread(path);
Ptr<SIFT> detector = SIFT::create(numFeatures);
if (detector.empty())
throw runtime_error("fail to create detector!");
//detect keypoints;
;
detector->detect(img, keypoints);
cout << "img:" << keypoints.size() << endl;
//compute descriptors for keypoints;
//Sift Feature description extraction
cout << "< Computing descriptors for keypoints from images..." << endl;
detector->compute(img, keypoints, descriptors);
cout << endl << "Descriptors Size: " << descriptors.size() << " >" << endl;
cout << endl << "Descriptor's Column: " << descriptors.cols << endl << "Descriptor's Row: " << descriptors.rows << endl;
cout << ">" << endl;
//Draw And Match img1,img2 keypoints
Mat img_keypoints;
drawKeypoints(img, keypoints, img_keypoints, Scalar::all(-1), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
imshow(path, img_keypoints);
}
// Draw matching feature points to
void drawMatch(Mat img1, vector<KeyPoint> keypoints1, Mat descriptors1, Mat img2, vector<KeyPoint> keypoints2, Mat descriptors2, int numlines) {
// Violent match
Ptr<DescriptorMatcher> descriptor_matcher = DescriptorMatcher::create("BruteForce");
vector<DMatch> matches;
descriptor_matcher->match(descriptors1, descriptors2, matches);
// Pick the best match before 20 individual
nth_element(matches.begin(), matches.begin() + numlines-1, matches.end());
matches.erase(matches.begin() + numlines-1, matches.end());
// Draw a match point line
Mat img_matches;
drawMatches(img1, keypoints1, img2, keypoints2, matches, img_matches, Scalar::all(-1), Scalar::all(-1), vector< char>(), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
imshow("Mathc", img_matches);
waitKey(0);
}
opencv4.3 Download address
https://download.csdn.net/download/qq_26696715/12459477
There is a problem adding QQ Group :686070107
版权声明
本文为[Spiritual]所创,转载请带上原文链接,感谢
边栏推荐
- Arduino ide build esp8266 development environment, slow file download solution | esp-01 make WiFi switch tutorial, transform dormitory lights
- 契约式设计(Dbc)以及其在C语言中的应用
- TypeScript(1-2-2)
- python开发qt程序读取图片的简单流程
- Travel notes of Suzhou
- Elasticsearch 学习一(基础入门).
- I used Python to find out all the people who deleted my wechat and deleted them automatically
- AI weekly: employees are allowed to voluntarily reduce salary; company response: employees are happy and satisfied; tiger tooth HR takes employees out of the company; Sweden forbids Huawei ZTE 5g equi
- 关于update操作并发问题
- VIM configuration tutorial + source code
猜你喜欢
Builder pattern
Welcome to offer, grade P7, face-to-face sharing, 10000 words long text to take you through the interview process
How to cooperate with people in software development? |Daily anecdotes
Travel notes of Suzhou
总结: 10月海外DeFi新项目,更多资管策略来了!
“他,程序猿,35岁,被劝退”:不要只懂代码,会说话,胜过10倍默默努力
Station B STM32 video learning
Flink's sink: a preliminary study
Arduino ide build esp8266 development environment, slow file download solution | esp-01 make WiFi switch tutorial, transform dormitory lights
Gopherchina 2020 Conference
随机推荐
How does Alibaba cloud's maxcompute add (original ODPs) work?
基于阿里云日志服务快速打造简版业务监控看板
关于update操作并发问题
构建者模式(Builder pattern)
Your random IO hard disk
markdown使用
CSP考试须知与各种小技巧
Is there no way out for older programmers?
uni-app实战仿微信app开发
新型存算一体芯片诞生,利好人工智能应用~
What is forsage Ethereum smart contract? What is the global decline of Ethereum
wanxin finance
Do these mistakes in your resume affect your annual salary of one million?
我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用
Arduino ide build esp8266 development environment, slow file download solution | esp-01 make WiFi switch tutorial, transform dormitory lights
How to solve the conflict when JD landed on Devops platform?
Talk about go code coverage technology and best practices
Awk implements SQL like join operation
Examples of unconventional aggregation
打工人,打工魂,抽终身会员,成为人上人!