cv :: Orb中的bug?

时间:2012-08-30 15:38:04

标签: opencv

我最近在opencv的ORB描述符中发现了一些非常奇怪的行为。

cv::Mat grey; //greyscale image
std::vector<cv::KeyPoint> keypoints;
cv::Mat descriptors;
cv::ORB detector;
detector(grey,cv::Mat(),keypoints,descriptors);

如果给出的图像没有包含潜在关键点(例如黑色图像)且错误

,则上述代码会一直崩溃
OpenCV Error: Assertion failed (m.dims >= 2) in Mat, file /Users/user/slave/ios_framework/src/opencv/modules/core/src/matrix.cpp, line 268

我发现要解决问题,我可以执行以下操作

cv::Mat grey;
std::vector<cv::KeyPoint> keypoints;
cv::Mat descriptors;
cv::ORB detector;
detector(grey,cv::Mat(),keypoints);
if(keypoints.size() > 0)
{
    detector(grey,cv::Mat(),keypoints,descriptors,true);
}

首先检测关键点,然后在检测到任何关键点时生成描述符。我在iOS上使用opencv2作为.framework。

这是OpenCV中的错误吗?如果没有,我做错了什么?如果是这样,是否有任何修复版本?

1 个答案:

答案 0 :(得分:3)

我刚刚运行了这段代码

cv::Mat grey = cv::Mat::zeros(100, 100, CV_8UC1);
std::vector<cv::KeyPoint> keypoints;
cv::Mat descriptors;
cv::ORB detector;
detector(grey,cv::Mat(),keypoints,descriptors);

使用OpenCV 2.4.1没有问题。

您是否调试了代码以查看断言的确切位置?