1

是否可以使用 OpenCV 在帧中有多个感兴趣区域的情况下执行博客检测?

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

我对多个 ROI 的需求源于减少处理的愿望,而我确信我感兴趣的斑点恰好位于总图像区域的 30-40% 左右,分为 3-4 个区域。对整个图像进行操作意味着在处理能力/时间方面的开销为 60-70%。或者,我在这里错过了一些非常基本的东西吗?

编辑:

在 SA 上找到了这个问题,看起来这可能是一种方法。如果我理解正确,我可以在整个帧上使用掩码,在 IplImage 中取消多个 ROI 的掩码,但不使用 ROI 本身。那正确吗 ?此外,这是否符合我减少处理要求的目的,这是我使用 ROI 的主要目标?

4

1 回答 1

1

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

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

希望这可以帮助。

于 2012-04-07T04:32:07.067 回答