Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to realize FLANN feature matching with opencv3/C++

2025-02-24 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)05/31 Report--

This article mainly introduces opencv3/C++ how to achieve FLANN feature matching related knowledge, the content is detailed and easy to understand, the operation is simple and fast, has a certain reference value, I believe that everyone after reading this opencv3/C++ how to achieve FLANN feature matching article will have a harvest, let's take a look.

Use the function detectAndCompute () to detect key points and calculate descriptors

The function detectAndCompute () argument states:

Void detectAndCompute (InputArray image, / / Image InputArray mask, / / Mask CV_OUT std::vector& keypoints,// set of output key points OutputArray descriptors,// calculation descriptor (descriptors [I] is a calculation descriptor for keypoints [I]) bool useProvidedKeypoints=false / / use key points)

Match () looks for the best match for each descriptor from the query set.

Parameter description:

Void match (InputArray queryDescriptors, / / query descriptor set InputArray trainDescriptors, / / training descriptor collection CV_OUT std::vector& matches, / / match InputArray mask=noArray () / / specify the allowed matching mask between the input query and the list matrix of descriptors) const

Example of FLANN feature matching:

# include#includeusing namespace cv;using namespace cv::xfeatures2d;//FLANN is faster for high-dimensional data int main () {Mat src1,src2; src1 = imread ("E:/image/image/card2.jpg"); src2 = imread ("E:/image/image/cards.jpg"); if (src1.empty () | | src2.empty ()) {printf ("can ont load images....\ n"); return-1;} imshow ("image1", src1) Imshow ("image2", src2); int minHessian = 400; / Select SURF feature Ptrdetector = SURF::create (minHessian); std::vectorkeypoints1; std::vectorkeypoints2; Mat descriptor1, descriptor2; / / detect key points and calculate descriptors detector- > detectAndCompute (src1, Mat (), keypoints1, descriptor1); detector- > detectAndCompute (src2, Mat (), keypoints2, descriptor2); / / Flann-based descriptor matcher FlannBasedMatcher matcher; std::vectormatches / / find the best match for each descriptor from the query set matcher.match (descriptor1, descriptor2, matches); double minDist = 1000; double maxDist = 0; for (int I = 0; I

< descriptor1.rows; i++) { double dist = matches[i].distance; printf("%f \n", dist); if (dist >

MaxDist) {maxDist = dist;} if (dist

< minDist) { minDist = dist; } } //DMatch类用于匹配关键点描述符的 std::vectorgoodMatches; for (int i = 0; i < descriptor1.rows; i++) { double dist = matches[i].distance; if (dist < max(2.5*minDist, 0.02)) { goodMatches.push_back(matches[i]); } } Mat matchesImg; drawMatches(src1, keypoints1, src2, keypoints2, goodMatches, matchesImg, Scalar::all(-1), Scalar::all(-1), std::vector(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS); imshow("output", matchesImg); waitKey(); return 0;}

This is the end of the article on "how to achieve FLANN feature matching in opencv3/C++". Thank you for reading! I believe that everyone has a certain understanding of the knowledge of "how to achieve FLANN feature matching in opencv3/C++". If you want to learn more knowledge, welcome to follow the industry information channel.

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report