小编Ayr*_*rck的帖子

Opencv基于Flann的匹配器

我遇到了一个问题:cv :: FlannBasedMatcher更精确地讲,使用knnMatch方法。我的程序将IplImage *和IplImage *作为输入,然后检测出一张脸,然后将其切开,并将建立的脸与存储在计算机中的图像进行比较。如果我的匹配度超过10,它将在标准输出Match中写入。

加载的图像不是灰度图像。那重要吗?

我的问题是,它可以正常工作,但随机时间为1分钟到3分钟或更多或更少。

错误消息始终显示在knnMatch方法上。它们在这里(请注意,每次只有一个):

OpenCV Error: Assertion failed ((globalDescIdx>=0) && (globalDescIdx < size())) in           getLocalIdx, file    /opt/local/var/macports/build/_opt_mports_dports_graphics_opencv/opencv/work/opencv-  2.4.9/modules/features2d/src/matchers.cpp, line 163
 libc++abi.dylib: terminating with uncaught exception of type cv::Exception:   /opt/local/var/macports/build/_opt_mports_dports_graphics_opencv/opencv/work/opencv-2.4.9/modules/features2d/src/matchers.cpp:163: error: (-215) (globalDescIdx>=0) && (globalDescIdx < size()) in function getLocalIdx
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会抛出此异常...

这是我的代码:

int        DroneCV::matchFaces()
{
std::vector<cv::KeyPoint> keypointsO;
std::vector<cv::KeyPoint> keypointsS;
cv::Mat descriptors_object, descriptors_scene;
cv::Mat foundFaces(this->_faceCut);
cv::FlannBasedMatcher matcher;
std::vector<std::vector<cv::DMatch>> matches;
std::vector<cv::DMatch> good_matches;
cv::SurfDescriptorExtractor extractor;
cv::SurfFeatureDetector surf(this->_minHessian);

surf.detect(foundFaces,keypointsS);
surf.detect(this->_faceToRecognize,keypointsO);
if (!this->_faceToRecognize.data || !foundFaces.data)
{
    this->log("Fail to init data in DronceCV::matchFaces"); …
Run Code Online (Sandbox Code Playgroud)

c++ opencv face-detection flann

2
推荐指数
1
解决办法
4517
查看次数

标签 统计

c++ ×1

face-detection ×1

flann ×1

opencv ×1