opencv 视频图片转换

Posted hello-python2020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv 视频图片转换相关的知识,希望对你有一定的参考价值。

# coding=utf-8
import shutil
import cv2
import os
video_path = ./test.mp4
image_path = ./image
extract_frame = 20


def extract_frames(video_path, image_path, index):
    """视频转图片"""
    video = cv2.VideoCapture()

    if not video.open(video_path):
        print("can not open the video path")
        exit(1)
    count = 1
    while True:
        success, frame = video.read()
        if frame is None:
            break
        if count % extract_frame == 0:          # 通过调整extract_frame的值来提取图片的帧率
            save_path = {}/{:>03d}.bmp.format(image_path, index)
            cv2.imwrite(save_path, frame)
            index += 1
        count += 1
    video.release()
    print("totall save {:d} pics".format(index-1))


def main():
    try:
        shutil.rmtree(image_path)
    except OSError:
        pass
    import os
    os.mkdir(image_path)
    extract_frames(video_path, image_path, 1)


if __name__ == __main__:
    main()

 

# 图片合成视频
def picvideo(path, size):
    filelist = os.listdir(path)  # 获取该目录下的所有文件名
    filelist.sort()

    ‘‘‘
    fps:
    帧率:1秒钟有n张图片写进去[控制一张图片停留5秒钟,那就是帧率为1,重复播放这张图片5次] 
    如果文件夹下有50张 534*300的图片,这里设置1秒钟播放5张,那么这个视频的时长就是10秒
    ‘‘‘
    fps = 5
    # size = (591,705) #图片的分辨率片
    file_path = "./image/" + result + ".avi"  # 导出路径
    fourcc = cv2.VideoWriter_fourcc(M, J, P, G)  # 不同视频编码对应不同视频格式(例:‘I‘,‘4‘,‘2‘,‘0‘ 对应avi格式 ‘D‘, ‘I‘, ‘V‘, ‘X‘ mp4 png图片)

    video = cv2.VideoWriter(file_path, fourcc, fps, size)

    for item in filelist:
        if item.endswith(.jpg):  
            item = path + / + item
            img = cv2.imread(item)  # 使用opencv读取图像,直接返回numpy.ndarray 对象,通道顺序为BGR ,注意是BGR,通道值默认范围0-255。
            video.write(img)  # 把图片写进视频

    video.release()  # 释放
    print("转换完成")

picvideo(./image, (352, 640))

 

以上是关于opencv 视频图片转换的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV|图片与视频的相互转换(C++&Python)

OpenCV | 图片与视频的相互转换(C++&Python)

opencv 视频图片转换

小工具系列Python + OpenCV 图片序列转换成视频

python 实现将视频转换为图片

手把手:使用OpenCV进行面部合成— C++ / Python