1

我有一个使用 Brisk 检测和 flann 匹配的简单程序。我希望通过将检测应用于每帧中的特定感兴趣区域来提高效率。我尝试了以下方法:

cv::Mat ROI_scene, scene; 

//region of interest
cv::Rect myROI(10, 10, 100, 100);
cv::Ptr<BRISK> detector = BRISK::create();
cv::Ptr<BRISK> descriptorExtractor = BRISK::create();

while (  capture.read(scene) )
{
    ROI_scene = scene(myROI);
    detector->detect(ROI_scene, keypoints_scene);
    descriptorExtractor->compute(ROI_scene, keypoints_scene, descriptors_scene);
    matcher.match(descriptors_object, descriptors_scene, matches);

}     

以上返回此错误:

OpenCV 错误:buildIndex_ 中的错误参数(仅支持连续数组),文件 opencv/3.0.0/modules/flann/src/miniflann.cpp,第 317 行 libc++abi.dylib:以 cv 类型的未捕获异常终止::例外:opencv/3.0.0/modules/flann/src/miniflann.cpp:317:错误:(-5)函数buildIndex_中仅支持连续数组

中止陷阱:6

我也尝试过使用 copyTO,然后我得到一个 Arrays must be 2d or 3d 错误。

任何见解都会非常有帮助

这是工作代码的要点: https ://gist.github.com/DevN00b1/63eba5813926e4d0ea32

4

0 回答 0