使用OpenCV在单个图像/帧中对多个ROI进行Blob检测 - 是否可能?

时间:2012-04-05 12:48:08

标签: opencv computer-vision

是否可以使用OpenCV在框架中存在多个感兴趣区域时执行博客检测?

我一直在阅读基于1.x'C'API的'Learning OpenCV'一书,我意识到IplImage中的ROI信息可以作为单个ROI,因此所有操作都将采用单一ROI。这是否意味着我无法使用多个ROI?

我对多重投资回报的要求源于减少处理的愿望,而我确信我感兴趣的斑点恰好只占总图像区域的30-40%,分为3-4个区域。在整个图像上操作意味着在处理能力/时间方面的开销为60-70%。或者,我在这里遗漏了一些非常基本的东西吗?

编辑:

在SA上发现this问题,看起来这可能是一种方法。如果我理解正确,我可以在整个帧上使用掩码,取消屏蔽多个ROI,但不在IplImage中使用ROI本身。是对的吗 ?另外,这是否符合我降低处理要求的目的,这是我使用ROI背后的主要目标?

1 个答案:

答案 0 :(得分:1)

在您的情况下,我认为您可以一次设置一个ROI,并为每个ROI执行blob检测。请记住,生成的坐标位于子图像空间中,您可能希望将它们转换回原始图像空间。我个人认为有用的一件事:通常ROI不是内存连续的,如果ROI的大小与原始图像相比非常小,将ROI复制为另一个图像并在该单个图像上运行算法可能会更快,例如:

for (int i = 0;i < numRects; ++i) {
    cv::Mat subImg = img(rects[i]).clone();
    blobDetection(subImg);
}

希望这有帮助。