我有一个图像序列(视频)。我想计算图像序列中对象的数量。但主要目标是对它们进行一次计数,这意味着不仅仅是在每一帧中,因为一个对象可能存在于多个帧中。我的想法是在物体退出屏幕时对它们进行计数,因为遮挡较少。我正在考虑通过扫描图像底部的非零像素来做到这一点。
我有一个 CV_FILLED 二进制图像(来自矩形函数),我想在其中进行扫描,然后如果找到 abject,则在对象上创建一个实例。但这种扫描不会扫描水平线上的每个像素,而只是扫描某些部分。
就像我们可以在范围内执行此操作,例如某些列,然后稍微跳过。
附上我的二进制图像示例 。这是从 feed 中获取的图像。我不想只计算该图像中的物体,还要计算那些仍在出现的物体。
此处附有检测到的物体的完整图片。欢迎您的指导或建设性批评 * 我不想使用 CVBlob
最佳答案
如果您不想使用 cvBlobLib,您可以使用 OpenCV 的轮廓检测功能。
该方法的文档是 here 。你的图像看起来很简单,但如果你得到带有遮挡的 Blob ,那么你想查看 CV_RETR_EXTERNAL 常量以仅获取外部轮廓。
这就是我通常使用的方法,尽管需要做更多的工作才能使用该方法的结果。
希望这有帮助。
关于visual-c++ - 计算二值图像中的前景对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318197/