0

当我尝试执行特征匹配时,我遇到了 cv::BFMatcher 问题。我用 xfeatures2D::SIFT 描述符计算描述符。当我尝试执行匹配时,应用程序输出在 f:\dd\vctools\crt_bld\self_64_amd64\crt\ 处显示“0x7ff833308b9c 处的异常,代码:0xe06d7363:C++ 异常,flags=0x1(无法继续执行)(第一次机会) src\xthrow.cpp:13" 代码类似于:

matchesltor.clear();
matchesrtol.clear();

cv::BFMatcher matcher(cv::NORM_L2);

ProcessedImageData *imageDataLeft = mImageDataMap.value(mapKeyList.at(m));
std::vector<cv::KeyPoint> tiePointsLeft = imageDataLeft->getTiepoints();
cv::Mat descriptorsLeft= imageDataLeft->getDescriptors();
ProcessedImageData *imageDataRight = mImageDataMap.value(mapKeyList.at(n));
std::vector<cv::KeyPoint> tiePointsRight = imageDataRight->getTiepoints();
cv::Mat descriptorsRight= imageDataRight->getDescriptors();

matcher.knnMatch(descriptorsLeft,descriptorsRight,matchesltor,2)
matcher.knnMatch(descriptorsRight,descriptorsLeft,matchesrtol,2)

输出消息显示在执行匹配“matcher.knnMatch(descriptorsLeft,descriptorsRight,matchesltor,2)”的第一行中。

奇怪的是它在一个只执行连接点检测、连接点描述和匹配的 qt 项目中工作,但是当我尝试将它加入其他项目(相同的代码、相同的编译器和相同的 qt 版本)时,它显示输出消息和执行停止(应用程序不会中断)。

谢谢你的帮助。

4

0 回答 0