Opencv cv::Orb中的Bug?
我最近在opencv的描述符中发现了一些非常奇怪的行为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
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);