我在谷歌阅读OpenCV中,发现下面的示例代码在网上玩:opencv的蟒蛇背景减法和运动跟踪
import cv2
def diffImg(t0, t1, t2):
d1 = cv2.absdiff(t2, t1)
d2 = cv2.absdiff(t1, t0)
return cv2.bitwise_and(d1, d2)
cam = cv2.VideoCapture('vid1.mp4')
winName = "Movement Indicator"
cv2.namedWindow(winName, cv2.CV_WINDOW_AUTOSIZE)
# Read three images first:
t_minus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
while True:
cv2.imshow(winName, diffImg(t_minus, t, t_plus))
# Read next image
t_minus = t
t = t_plus
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
key = cv2.waitKey(10)
if key == 27:
cv2.destroyWindow(winName)
break
print "Goodbye"
所以我用这个脚本得到这样的结果。现在我试图弄清楚的是 - 1)获取视频文件中移动对象的边界矩形 2)将该边界矩形的内容从原始视频帧复制到另一个视频帧并将完成的视频写入文件
此外,在试图Kanishak Katahra的解决方案下面,我在下面的截图让在结果窗口中下面的输出在右侧的截图 -
请问您可以减少您的问题到最小的可能主题吗?你问如何使用OpenCV写入电影文件?你在问如何使用OpenCV写入新窗口?你问如何将'diffImg'保存到一个变量来完成这些事情?最后,您能否编辑您的问题以包含指向您用于编写此脚本的资源的链接? – Seanny123
我想从diffimg中剪切突出显示的部分,并仅将diffimg中突出显示的部分从原始帧复制到视频文件中 – DeadMan
那么,您尝试完成此操作的是什么?当你看看diffImg的结果时,你能看到它可能被输入到视频文件中吗? – Seanny123