背景减法。 MOG和MOG2被证明是无益的,因为他们认为第一帧是背景。
所以我逐帧减法。像这样
我的问题是现在只将检测到的物体涂成白色 顺便说一句,我确实试过了内置的FindContours()方法&在图像中获得了数千个轮廓。
答案 0 :(得分:2)
findContours()
你可能会误导。该方法假定二值化图像作为输入,如果它不是二进制的,则将非零像素视为1,而不管是哪种颜色或灰度。 findContours
因此,您的图像几乎被二值化,您会观察到黑白区域。将黑色区域视为背景,将非黑色区域(非零)视为前景像素重复区域。 findContours()
除了“标记”连贯的前景像素(是区域)之外,没有做更多或更少的事情。因此,您将获得一个向量列表(每个检测到的区域的点向量)。
要将整个总线检测为对象,您可能需要查找:convexHull 这是(如果我没记错的话)一个顶点列表,它描述了一个区域,其中所有(先前找到的)区域都在里面。因此,您可能需要首先减去异常值(例如图像底部的街道或阴影)。
也很有趣:convexityDefects 并且:approxPolyDP