opencv实现图片视频互转

import os
import cv2
from PIL import Image


def Vedio_to_JPG(mp4_path):
    """ 将视频转换成图片
        mp4_path: 视频路径 """
    cap = cv2.VideoCapture(mp4_path)
    suc = cap.isOpened()  # 是否成功打开
    frame_count = 0
    while suc:
        frame_count += 1
        suc, frame = cap.read()
        params = []
        params.append(2)  # params.append(1)
        cv2.imwrite('mv\\%d.jpg' % frame_count, frame, params)

    cap.release()
    print('image: ', frame_count)


def JPG_to_Video(pic_path, mp4_path, fps):
    """ 将图片合成视频. mp4_path: 视频路径,fps: 帧率 """
    fourcc = cv2.VideoWriter_fourcc(*"mp4v")
    images = os.listdir(pic_path)
    images.sort(key=lambda x:int(x[:-4]))
    im = Image.open(os.path.join(pic_path, images[0]))
    # print(im.size)
    vw = cv2.VideoWriter(mp4_path, fourcc, fps, im.size)

    for picture in images:
        img = os.path.join(pic_path, picture)
        img = cv2.imread(img)
        img = cv2.resize(img, im.size)
        vw.write(img)
    print('The video synthetic success!')


if __name__ == '__main__':
    pic_path = '../img' # all  img  skeleton
    mp4_path = '../img_fps_60.mp4'
    # Vedio_to_JPG(sp)  # 视频转图片
    JPG_to_Video(pic_path, mp4_path, 60)  # 图片转视频
发布了36 篇原创文章 · 获赞 1 · 访问量 2150

猜你喜欢

转载自blog.csdn.net/jianghusanren3/article/details/97396500