OpenCV边缘增强

时间:2011-12-27 06:26:18

标签: c++ image-processing opencv background-subtraction

我正在执行背景扣除以从视频中获取移动汽车,如下所示(运行平均背景建模)

我在此之后应用findContours()来绘制汽车周围的多边形。

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

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

这可能有点过头而且远非快速解决方案,但水平集方法非常适合提取预先分段的汽车。

答案 1 :(得分: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()