使用opencv同时保存多个视频

时间:2018-12-04 09:31:13

标签: opencv

对于我的项目,我有多台摄像机,我需要同时将视频供稿保存到多个输出文件中。这是我的代码:

import cv2

def one_cam_is_open(list_of_cams):
    for cam in list_of_cams:
        if cam.isOpened():
            return True
    return False

cam_list = []
 # Capture video from camera
for i in range(0, 2):
    cap = cv2.VideoCapture(i)
    if cap!=-1:
        cam_list.append(cv2.VideoCapture(i))
# the width and height of all cameras will be 1900x1080
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH) + 0.5)
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT) + 0.5)
dim = (1900, 1080)

# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Be sure to use the lower case

video_writers = {}
for i, cam in enumerate(cam_list):
    video_writers[cam] = cv2.VideoWriter("output_" + str(i) + ".mp4", fourcc, 20.0, dim)

while one_cam_is_open(cam_list):
    for (cam, out) in video_writers:#TypeError: cannot unpack non-iterable cv2.VideoCapture object
        ret, frame = cam.read()
        if ret == True:
            frame = cv2.flip(frame, 0)

            # write the flipped frame
            out.write(frame)

            cv2.imshow('frame', frame)
            if (cv2.waitKey(1) & 0xFF) == ord('q'): # Hit `q` to exit
                break
        else:
            break

# Release everything if job is finished
for (cam, out) in video_writers:
    out.release()
    cam.release()
cv2.destroyAllWindows()

如代码中所述,当我尝试解压缩每个摄像机对VideoWriter对象的引用时,出现错误TypeError: cannot unpack non-iterable cv2.VideoCapture object

是否可以使用VideoWriter写入多个视频文件?

0 个答案:

没有答案