gpt4 book ai didi

OpenCV: 'BruteForceMatcher':未声明的标识符

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:50 25 4
gpt4 key购买 nike

我正在使用 OpenCV 2.4.3 并尝试调用 BruteForceMatcher,但出现此错误:

1>------ Build started: Project: pixelTracking, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>d:\myproject\opencv\belajar\pixeltracking\pixeltracking\main.cpp(58) : error C2065: 'BruteForceMatcher' : undeclared identifier
1>d:\myproject\opencv\belajar\pixeltracking\pixeltracking\main.cpp(58) : error C2275: 'cv::L2<T>' : illegal use of this type as an expression
1> with
1> [
1> T=float
1> ]
1>d:\myproject\opencv\belajar\pixeltracking\pixeltracking\main.cpp(58) : error C2065: 'matcher' : undeclared identifier
1>d:\myproject\opencv\belajar\pixeltracking\pixeltracking\main.cpp(61) : error C2065: 'matcher' : undeclared identifier
1>d:\myproject\opencv\belajar\pixeltracking\pixeltracking\main.cpp(61) : error C2228: left of '.match' must have class/struct/union
1> type is ''unknown-type''
1>Build log was saved at "file://d:\myproject\OPENCV\belajar\pixelTracking\pixelTracking\Debug\BuildLog.htm"
1>pixelTracking - 5 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我的代码:

#include <iostream>
#include <vector>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/nonfree/features2d.hpp>
#include <opencv2/features2d/features2d.hpp>

int main()
{
// Read input images
cv::Mat image1= cv::imread("../gambar1.jpg",0);
cv::Mat image2= cv::imread("../gambar2.jpg",0);
if (!image1.data || !image2.data)
return 0;

// Display the images
cv::namedWindow("Right Image");
cv::imshow("Right Image",image1);
cv::namedWindow("Left Image");
cv::imshow("Left Image",image2);

// vector of keypoints
std::vector<cv::KeyPoint> keypoints1;
std::vector<cv::KeyPoint> keypoints2;

// Construction of the SURF feature detector
cv::SurfFeatureDetector surf(3000);

// Detection of the SURF features
surf.detect(image1,keypoints1);
surf.detect(image2,keypoints2);

std::cout << "Number of SURF points (1): " << keypoints1.size() << std::endl;
std::cout << "Number of SURF points (2): " << keypoints2.size() << std::endl;

// Draw the kepoints
cv::Mat imageKP;
cv::drawKeypoints(image1,keypoints1,imageKP,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
cv::namedWindow("Right SURF Features");
cv::imshow("Right SURF Features",imageKP);
cv::drawKeypoints(image2,keypoints2,imageKP,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
cv::namedWindow("Left SURF Features");
cv::imshow("Left SURF Features",imageKP);

// Construction of the SURF descriptor extractor
cv::SurfDescriptorExtractor surfDesc;

// Extraction of the SURF descriptors
cv::Mat descriptors1, descriptors2;
surfDesc.compute(image1,keypoints1,descriptors1);
surfDesc.compute(image2,keypoints2,descriptors2);

std::cout << "descriptor matrix size: " << descriptors1.rows << " by " << descriptors1.cols << std::endl;

// Construction of the matcher
BruteForceMatcher<cv::L2<float>> matcher;
// Match the two image descriptors
std::vector<cv::DMatch> matches;
matcher.match(descriptors1,descriptors2, matches);

std::cout << "Number of matched points: " << matches.size() << std::endl;

std::nth_element(matches.begin(), // initial position
matches.begin()+24, // position of the sorted element
matches.end()); // end position
// remove all elements after the 25th
matches.erase(matches.begin()+25, matches.end());

cv::Mat imageMatches;
cv::drawMatches(image1,keypoints1, // 1st image and its keypoints
image2,keypoints2, // 2nd image and its keypoints
matches, // the matches
imageMatches, // the image produced
cv::Scalar(255,255,255)); // color of the lines
cv::namedWindow("Matches");
cv::imshow("Matches",imageMatches);

cv::waitKey();
return 0;

int size=7;
cv::Mat imaf1;
image1.convertTo(imaf1,CV_32F);

cv::Mat imaf2;
image2.convertTo(imaf2,CV_32F);

cv::waitKey();
return 0;
}

最佳答案

在 opencv 2.4 中,BruteForceMatcher 不再那样调用了。您可以包含 legacy.hpp 以使用以前的 openCV 版本。BruteForceMatcher 现在是 BFMatcher

参见 documentation .

关于OpenCV: 'BruteForceMatcher':未声明的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com