我有一个使用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,line 317 libc ++ abi.dylib:以未捕获的类型异常终止 cv ::异常:opencv / 3.0.0 / modules / flann / src / miniflann.cpp:317: 错误:( - 5)函数中仅支持连续数组 buildIndex _
中止陷阱:6
我也尝试过使用copyTO然后我得到一个数组必须是2d或3d错误。
任何见解都会非常有用
以下是工作代码的要点: https://gist.github.com/DevN00b1/63eba5813926e4d0ea32