你知道移动相机背景减法的任何来源吗?我想写类似这样的东西:http: //vimeo.com/72577177
有很多关于静止背景的运动检测的资料,但我找不到任何具有运动背景的代码示例。
编辑:我通过检测最大数量的相似向量来考虑光流和去除背景。会不会这么简单?
你知道移动相机背景减法的任何来源吗?我想写类似这样的东西:http: //vimeo.com/72577177
有很多关于静止背景的运动检测的资料,但我找不到任何具有运动背景的代码示例。
编辑:我通过检测最大数量的相似向量来考虑光流和去除背景。会不会这么简单?
实现那个视频并不难。因为移动的物体很小,背景是静止的,尽管相机移动得很慢。
首先,确定连续帧之间的运动矢量。例如,帧 t-1 中 (100,100) 处的像素在帧 t 中移动到 (103, 102)。由于背景的大部分是静态的,因此可以确定一个共同的运动矢量来描述大多数像素的运动。
其次,使用RANSAC或其他一些算法根据运动矢量找到不移动的像素。这些像素代表移动的物体。
您提到的链接更像是对象跟踪。但是如果你想使用 opencv 应用移动背景减法会更容易。它更像是一个运动跟踪器。
这是代码:
import cv2
import numpy as np
cap = cv2.VideoCapture("input.mp4")
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()
此代码允许您在视频文件中应用背景减法并保存。