我有一个使用 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