使用Python代码实现视频(如.MP4)与图片(如.jpg)文件格式的相互转换

这篇具有很好参考价值的文章主要介绍了使用Python代码实现视频(如.MP4)与图片(如.jpg)文件格式的相互转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.使用Python代码将视频文件(.MP4格式)转换为图片(.jpg格式)

对视频进行抽帧操作,将视频逐帧转换为图片(.jpg格式的图片的文件)
此处采取的方法是:对视频.MP4文件每隔10帧截取一张.jpg格式的图片
需要使用的Python方法cv2在opencv-python库中,下载安装方式;

pip install opencv-python

实现上述功能的Python代码如下:文章来源地址https://www.toymoban.com/news/detail-771764.html

import cv2
# TODO 将原视频转换为图片
def VideotoPicture():
    # 视频地址  创建一个VideoCapture对象,指定读取的视频文件
    cap = cv2.VideoCapture(r'C:\Users\12292\Desktop\1.mp4')
    # 通过摄像头的方式
    # cap = cv2.VideoCapture(1)

    fps = cap.get(cv2.CAP_PROP_FPS)  # 获取帧率 每一秒的视频帧数
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  # 获取宽度
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 获取高度

    # 判断视频是否读取成功  成功返回True  失败返回False
    sucess = cap.isOpened()

    frame_count = 0
    # 视频得到的图片名字img_name
    img_name = 0
    while sucess:
        frame_count += 1
        # 读取视频每一帧图像
        sucess, frame = cap.read()
        # TODO 每隔10帧存储一张图片
        if (frame_count % 10 == 0):
            img_name += 1
            # 图片存储地址以及存储格式.jpg  frame就是视频转换得到的图片  视频得到的图片名字img_name从1开始
            # 即最终视频转换得到的图片名字依次为1.jpg,2.jpg,3.jpg.................
            cv2.imwrite(r'C:\Users\12292\Desktop\1\%d.jpg' % img_name, frame)

    print("帧率(每秒视频的帧数):", fps)
    # 释放视频资源
    cap.release


if __name__ == '__main__':
    VideotoPicture()  # 视频转图像
2.使用Python代码将图片(.jpg,.png等格式)转换为视频文件(例如.MP4格式)

基本步骤如下:
  a. 使用glob获取路径下的所有图片;
  b. cv2.imread()读取所有图片;
  c. 将读取的图片存储在新的列表中,img_array;
  d. 使用cv2.VideoWriter()创建VideoWriter对象,注意参数的设置;
  e. 使用cv2.VideoWriter().write()保存 img_array 中的每一帧图像到视频文件;
  f. 释放 VideoWriter对象;

对众多图片进行拼接合成操作,将多张图片拼接成一个视频文件(例如.MP4格式)

实现上述功能的Python代码如下:

import cv2
import numpy as np
import glob
import os

# 其它格式的图片也可以 此处使用的是.jpg格式的图片
img_array = []
# 指出用于生成视频的图片所在的存储路径  glob获取路径下的所有图片
for filename in glob.glob('C:/Users/12292/Desktop/1/*.jpg'):
    # 读取所有图片
    img = cv2.imread(filename)
    height, width, layers = img.shape
    # 获取图片大小尺寸
    size = (width, height)
    # 将读取的图片存储在新的列表中,img_array
    img_array.append(img)

# avi:视频类型,或者导出.mp4类型的视频文件也可以
# cv2.VideoWriter_fourcc(*'mp4v'):编码格式
# 5:视频帧率
# size:视频中图片大小
# 视频输出地址与命名:C:/Users/12292/Desktop/2/2.mp4
# 使用cv2.VideoWriter()创建VideoWriter对象
out = cv2.VideoWriter('C:/Users/12292/Desktop/2/2.mp4',
                      # cv2.VideoWriter_fourcc(*'DIVX'),
                      cv2.VideoWriter_fourcc(*'mp4v'),
                      5, size)

for i in range(len(img_array)):
    # 使用cv2.VideoWriter().write()保存 img_array 中的每一帧图像到视频文件;
    out.write(img_array[i])
# 释放 VideoWriter对象
out.release()

到了这里,关于使用Python代码实现视频(如.MP4)与图片(如.jpg)文件格式的相互转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包