我正在执行背景减法以从以下视频中获取移动的汽车(运行平均背景建模)
我在这之后应用 findContours() 在汽车周围绘制一个多边形。
如您所见,获得的输出质量不是很好。有什么办法可以增强汽车的边缘,使其更加突出,并消除周围的外来噪音。我尝试执行形态闭合(扩张->侵蚀)来填补空白,但输出不如预期。
我正在执行背景减法以从以下视频中获取移动的汽车(运行平均背景建模)
我在这之后应用 findContours() 在汽车周围绘制一个多边形。
如您所见,获得的输出质量不是很好。有什么办法可以增强汽车的边缘,使其更加突出,并消除周围的外来噪音。我尝试执行形态闭合(扩张->侵蚀)来填补空白,但输出不如预期。
这可能是矫枉过正,远非快速解决方案,但水平集方法将非常适合提取预先分段的汽车。
您可以尝试通过使用来应用背景减法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()