4

我正在执行背景减法以从以下视频中获取移动的汽车(运行平均背景建模)

我在这之后应用 findContours() 在汽车周围绘制一个多边形。

如您所见,获得的输出质量不是很好。有什么办法可以增强汽车的边缘,使其更加突出,并消除周围的外来噪音。我尝试执行形态闭合(扩张->侵蚀)来填补空白,但输出不如预期。

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

0

这可能是矫枉过正,远非快速解决方案,但水平集方法将非常适合提取预先分段的汽车。

于 2012-06-04T07:41:05.133 回答
0

您可以尝试通过使用来应用背景减法cv2.createBackgroundSubtractorMOG2()

代码:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)
out = cv2.createBackgroundSubtractorMOG2()

fourcc = cv2.VideoWriter_fourcc(*'MJPG')
output = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480), isColor=False)

while(cap.isOpened()):
    ret, frame = cap.read()

    if ret==True:
        frame = cv2.flip(frame,180)

        outmask = out.apply(frame)
        output.write(outmask)

        cv2.imshow('original', frame)
        cv2.imshow('Motion Tracker', outmask)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    else:
        break


output.release()
cap.release()
cv2.destroyAllWindows()
于 2020-05-09T15:57:36.223 回答