我在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)将该边界矩形的内容从原始视频帧复制到另一个,并将完成的视频写入文件
答案 0 :(得分:0)
将您获得的输出中的兴趣点设为1。将其余部分设为0。 将其转换为与原始图像大小相同的3D数组。 将原始图像与您获得的输出相乘。
g++ --std=c++11 [files] -lssl