Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv cv::Orb中的Bug?_Opencv - Fatal编程技术网

Opencv cv::Orb中的Bug?

Opencv cv::Orb中的Bug?,opencv,Opencv,我最近在opencv的描述符中发现了一些非常奇怪的行为 cv::Mat grey; //greyscale image std::vector<cv::KeyPoint> keypoints; cv::Mat descriptors; cv::ORB detector; detector(grey,cv::Mat(),keypoints,descriptors); 我发现要解决这个问题,我可以执行以下操作 cv::Mat grey; std::vector<cv::KeyPo

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

cv::Mat grey; //greyscale image
std::vector<cv::KeyPoint> keypoints;
cv::Mat descriptors;
cv::ORB detector;
detector(grey,cv::Mat(),keypoints,descriptors);
我发现要解决这个问题,我可以执行以下操作

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);
}
cv::Mat灰;
向量关键点;
cv::Mat描述符;
cv::ORB检测器;
探测器(灰色,cv::Mat(),关键点);
如果(keypoints.size()>0)
{
检测器(灰色,cv::Mat(),关键点,描述符,真);
}
它首先检测关键点,然后在检测到任何关键点时生成它们的描述符。我正在使用opencv2作为iOS上的.framework

这是OpenCV中的错误吗?如果没有,我做错了什么?如果是这样的话,是否有固定版本?

我刚刚运行了这段代码

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);
cv::Mat grey=cv::Mat::zero(100100,cv_8UC1);
向量关键点;
cv::Mat描述符;
cv::ORB检测器;
检测器(灰色,cv::Mat(),关键点,描述符);
使用OpenCV 2.4.1不会出现问题


您是否在代码中调试了断言失败的具体位置?

是的,它在行检测器上失败(灰色,cv::Mat(),关键点,描述符);您确定为其提供了无法生成关键点的图像吗?(纯白色或纯黑色)是的,我完全运行了您可以在上面看到的代码,
cv::Mat::zeros(100100,cv_8UC1)
返回一个包含所有黑色像素的100 x 100像素8位图像。您也可以尝试将您的输入图像设置为此,如果它工作正常,我假设您的输入图像没有正确加载。这也符合断言,即输入矩阵只有一个维度。这段代码让我崩溃了。我猜我的OpenCV版本中有一个bug,或者构建设置有问题。谢谢你帮我查一下。我会去寻找更好/更新的版本
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);