【发布时间】:2014-09-02 23:44:30
【问题描述】:
背景减法。 结果证明 MOG 和 MOG2 没有用,因为它们假设第一帧是背景。
所以我逐帧减法。像这样
我的问题是现在将唯一检测到的对象涂成白色。
顺便说一句,我确实尝试了内置的 FindContours() 方法并获得了图像中的数千个轮廓。
【问题讨论】:
标签: opencv paint background-subtraction
背景减法。 结果证明 MOG 和 MOG2 没有用,因为它们假设第一帧是背景。
所以我逐帧减法。像这样
我的问题是现在将唯一检测到的对象涂成白色。
顺便说一句,我确实尝试了内置的 FindContours() 方法并获得了图像中的数千个轮廓。
【问题讨论】:
标签: opencv paint background-subtraction
对于findContours(),您可能会被误导。该方法假设一个二值化图像作为输入,如果它不是完全二值化的,它会将非零像素视为 1,无论是哪种颜色或灰度。 findContours
因此,您的图像几乎已二值化,您可以观察到黑白区域。黑色区域被视为背景,非黑色区域(非零)分别被视为前景像素区域。 findContours() 只不过是“标记”连贯的前景像素(是的,区域)。所以你会得到一个向量列表(每个检测到的区域的点向量)。
为了将整个总线检测为对象,您可能需要查找:convexHull 这也是(如果我没记错的话)一个顶点列表,它描述了一个所有(以前找到的)区域都在里面的区域。因此,您可能需要先减去异常值(例如图像底部的街道或阴影)。
也很有趣:convexityDefects 和:approxPolyDP
【讨论】: