python图片合成视频

该代码段使用OpenCV和imageio库从视频中读取帧,以特定FPS保存到新的MP4文件。它首先初始化视频捕获对象,获取视频的属性如FPS、帧数、宽度和高度,然后创建一个imageiowriter来保存帧。在循环中,它读取每一帧,达到一定条件后停止处理并释放资源。
摘要由CSDN通过智能技术生成
import cv2
import imageio
from tqdm import tqdm
from pathlib import Path


if __name__ == '__main__':


    cap = cv2.VideoCapture("test2.mp4")
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    print(fps, frame_count)
    print(height, width)


    # fourcc = cv2.VideoWriter_fourcc(*'MP42')
    # videoWrite = cv2.VideoWriter("split.avi", fourcc, fps, (width,height))
    imageio_writer = imageio.get_writer("io.mp4", fps=fps)

    n, cnt= 0, 0
    pbar = tqdm(total=frame_count)
    while cap.isOpened():

        ret, frame = cap.read()
        if ret and (frame is not None):
            n += 1
            cnt = 0
            # videoWrite.write(frame)
            imageio_writer.append_data(frame[...,::-1])

            if n > fps*60*13:
                break


        elif (not ret) and (frame is None):
            cnt += 1
            if cnt >= 5000:
                break

        else:
            print(f"ret:{ret}\tframe:{frame}\tn:{n}\ti:{i}")

        pbar.update()
    pbar.close()

    # videoWrite.release()
    imageio_writer.close()
    cap.release()
    cv2.destroyAllWindows()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值