【发布时间】:2017-04-18 07:43:37
【问题描述】:
我在 google 上阅读了有关 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)将该边界矩形的内容从原始视频帧复制到另一个并将完成的视频写入文件
【问题讨论】:
-
能否将您的问题减少到最小的主题?您是否在问如何使用 OpenCV 写入电影文件?您是否在问如何使用 OpenCV 写入新窗口?您是在问如何将
diffImg保存到变量中以完成这些事情中的任何一个吗?最后,您能否编辑您的问题以包含指向您用于编写此脚本的资源的链接? -
我想从 diffimg 中剪切高亮部分,只将 diffimg 中高亮部分从原始帧复制到视频文件中
-
那么您尝试过什么来实现这一点?当您查看
diffImg的结果时,您能看到它是如何输入到视频文件中的吗?
标签: python c++ opencv motion-detection background-subtraction