繁体   English   中英

使用 Opencv 将单个帧合并到视频文件

[英]Merge individual frame to video file using Opencv

我正在尝试使用 Opencv 将单个帧堆叠到视频文件中。 我想将两个不同的代码组合在一起来制作单独的框架。 以下代码帮助我提取单个帧,

fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('file_data.mp4',fourcc,20 (1920,1080),False)
while True:
    ret, frame=cap.read()
    mask = object_detector.apply(frame)
    _, mask  = cv2.threshold(mask,254,255,cv2.THRESH_BINARY)       
    contours,_ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    res = cv2.bitwise_and(frame,frame,mask=mask)
    for cnt in contours:
        area = cv2.contourArea(cnt)
        if area>1000:   
            #print("Area of contour:", area)
            cv2.drawContours(frame, [cnt], -1, (0,255,0),2)
            cv2.imwrite("file%d.jpg"%count, frame)
            out.write(frame)
    if cv2.waitKey(1) and 0xFF == ord('q'):
        break

我尝试将单个帧存储在数组中,但是没有用。 它没有显示任何错误,但电脑崩溃。

fps = 20, , 宽度 = 1920, 高度 = 1080

感谢罗特姆。 该问题已使用 Opencv 的 VideoWriter 解决。 工作代码如下。

fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('file_data.mp4',fourcc,20,(1920,1080), True)
while True:
ret, frame=cap.read()
if ret == True:
    # frame[frame<=thresholds]=0
    mask = object_detector.apply(frame)
    _, mask  = cv2.threshold(mask,254,255,cv2.THRESH_BINARY)       
    contours,_ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    res = cv2.bitwise_and(frame,frame,mask=mask)
    for cnt in contours:
        area = cv2.contourArea(cnt)
        if area>1000:    
            cv2.drawContours(frame, [cnt], -1, (0,255,0),2)
            out.write(frame)
    break
if cv2.waitKey(20) == ord('q'):
    break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM