百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python-连续图片合成视频

itomcoil 2025-02-06 15:17 29 浏览

前言

很多时候,我们需要将图片直接转成视频。下面介绍用python中的OpenCV将进行多张图合成视频。

cv2安装

不要直接用pip install cv2,这会报错。有很多人建议用打开window自带的cmd,然后运行 pip install opencv-python ,但是我这样操作失败了。

下面介绍自己去下载Python3.7安装cv2:

(1) cv2文件下载。我用的是python3.7,选择cv2文件是
opencv_python-3.4.3.18-cp37-cp37m-win_amd64.whl,进行下载,
https://pypi.tuna.tsinghua.edu.cn/simple/opencv-python/

(2) 下载完成后,我将下载文件放在了桌面,文件地址如下:C:\Users\stranger\Desktop\
opencv_python-3.4.3.18-cp37-cp37m-win_amd64.whl

(3) win 10系统下直接搜索cmd,打开命令提示符,如下图:


(4) 更改路径,记得再加 cd,将目录改成桌面,语句如下:cd C:\Users\stranger\Desktop

(5) 如果没有安装pip,请先安装pip。然后运行语句:pip install
opencv_python-3.4.3.18-cp37-cp37m-win_amd64.whl,即可安装完毕



照片尺寸批量统一

在用这个cv2进行多张图片转视频时,运行cv2.VideoWriter需要统一照片尺寸,否则即使输出视频也没有内容。

import os.path
import glob
from tqdm import tqdm
from PIL import Image
#提取目录下所有图片,更改尺寸后保存到另一目录
def unifyszie(jpgfile,outdir,width,height):
    img=Image.open(jpgfile)
    try:
        new_img=img.resize((width,height),Image.BILINEAR)   
        new_img.save(os.path.join(outdir,os.path.basename(jpgfile)))
    except Exception as e:
        print(e)
#输入图片路径为inputpath,保存图片路径为savepath
def savefig(inputpath,savepath,width,height):
    for jpgfile in tqdm(glob.glob(inputpath)):
        print(jpgfile)
        unifyszie(jpgfile,savepath,width,height)

inputpath = "F:/BaiduNetdiskDownload/figure/*.jpg"
savepath ="F:/BaiduNetdiskDownload/resizeimg"
#width,height代表修改后的图片的宽和高
savefig(inputpath,savepath,1000,700)

opencv 将连续图片保存为视频格式

准备工作都做完,下面开始进行视频的制作。代码如下:

import os
import pandas as pd
import numpy as np
import time
import cv2

#创建读取的文件列表
filelist=[]
#读取的文件路径
path ='F:/BaiduNetdiskDownload/resizeimg/'
filelist=os.listdir(path)
#可以用.sort函数进行图片的排序 如:filelist.sort(key=lambda x:int(x)) #x只含有数字时
fps=1#每秒读取的照片数
size=(1000,700) #需要转为视频的图片的尺寸,要求土拍你尺寸一致
file_path = str(int(time.time()))+'.avi'#保存的路径和格式
fourcc = cv2.VideoWriter_fourcc('I','4','2','0')#'I','4','2','0' 对应avi格式)
video =cv2.VideoWriter(file_path,fourcc,fps,size)
for item in filelist:
    print(item)
    if item.endswith('.jpg'):#判断图片后缀是否是.jpg
        item =path+item #路径与文件名组成文件路径
        img=cv2.imread(item)#使用opencv读取图像,直接返回numpy.ndarray 对象,通道顺序为BGR ,注意是BGR,通道值默认范围0-255。
        video.write(img) #把图片写进视频
video.release() #释放
print('finish')

VideoWriter()函数的使用

依据OpenCV3.4版本文档中对VideoWriter()函数的描述,使用方法如下:

VideoWriter(const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)

VideoWriter()的参数有filename, fourcc, fps, frameSize, isColor。下面我们就来逐个的解释:

  • filename:需要生成的视频的名字
  • fourcc:用于压缩框架的解码器的4位编码(four code of codec),你在这个链接里可以查找到可用的4位码(http://www.fourcc.org/codecs.php)
  • fps:每秒的视频帧数(framrate persecond)
  • frameSize:视频画面的尺寸(这里需要与用于合成视频的图片尺寸一致)
  • isColor:如果该位置为Ture,解码器会进行颜色框架的解码,否则会使用灰度进行颜色架构(该功能仅支持在Windows系统中使用)

视频编码参考

不同视频编码对应不同视频格式(例:'D', 'I', 'V', 'X' 对应mp4格式)

CV_FOURCC('P','I','M','1') = MPEG-1 codec

CV_FOURCC('M','J','P','G') = motion-jpeg codec

CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec

CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec

CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec

CV_FOURCC('U', '2', '6', '3') = H263 codec

CV_FOURCC('I', '2', '6', '3') = H263I codec

CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

相关推荐

MySQL修改密码_mysql怎么改密码忘了怎么办

拥有原来的用户名账户的密码mysqladmin-uroot-ppassword"test123"Enterpassword:【输入原来的密码】忘记原来root密码第一...

数据库密码配置项都不加密?心也太大了吧!

先看一份典型的配置文件...省略...##配置MySQL数据库连接spring.datasource.driver-class-name=com.mysql.jdbc.Driverspr...

Linux基础知识_linux基础入门知识

系统目录结构/bin:命令和应用程序。/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev:dev是Device(设备)的缩写,该目录...

MySQL密码重置_mysql密码重置教程

之前由于修改MySQL加密模式为mysql_native_password时操作失误,导致无法登陆MySQL数据库,后来摸索了一下,对MySQL数据库密码进行重置后顺利解决,步骤如下:1.先停止MyS...

Mysql8忘记密码/重置密码_mysql密码忘了怎么办?

Mysql8忘记密码/重置密码UBUNTU下Mysql8忘记密码/重置密码步骤如下:先说下大概步骤:修改配置文件,使得用空密码可以进入mysql。然后置当前root用户为空密码。再次修改配置文件,不能...

MySQL忘记密码怎么办?Windows环境下MySQL密码重置图文教程

有不少小白在使用Windows进行搭建主机的时候,安装了一些环境后,其中有MySQL设置后,然后不少马大哈忘记了MySQL的密码,导致在一些程序安装及配置的时候无法进行。这个时候怎么办呢?重置密码呗?...

10种常见的MySQL错误,你可中招?_mysql常见错误提示及解决方法

【51CTO.com快译】如果未能对MySQL8进行恰当的配置,您非但可能遇到无法顺利访问、或调用MySQL的窘境,而且还可能给真实的应用生产环境带来巨大的影响。本文列举了十种MySQL...

Mysql解压版安装过程_mysql解压版安装步骤

Mysql是目前软件开发中使用最多的关系型数据库,具体安装步骤如下:第一步:Mysql官网下载最新版(mysql解压版(mysql-5.7.17-winx64)),Mysql官方下载地址为:https...

MySQL Root密码重置指南:Windows新手友好教程

如果你忘记了MySQLroot密码,请按照以下简单步骤进行重置。你需要准备的工具:已安装的MySQL以管理员身份访问命令提示符一点复制粘贴的能力分步操作指南1.创建密码重置文件以管理员...

安卓手机基于python3搜索引擎_python调用安卓so库

环境:安卓手机手机品牌:vivox9s4G运行内存手机软件:utermux环境安装:1.java环境的安装2.redis环境的安装aptinstallredis3.elasticsearch环...

Python 包管理 3 - poetry_python community包

Poetry是一款现代化的Python依赖管理和打包工具。它通过一个pyproject.toml文件来统一管理你的项目依赖、配置和元数据,并用一个poetry.lock文件来锁定所有依赖的精...

Python web在线服务生产环境真实部署方案,可直接用

各位志同道合的朋友大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题最近经...

官方玩梗:Python 3.14(πthon)稳定版发布,正式支持自由线程

IT之家10月7日消息,当地时间10月7日,Python软件基金会宣布Python3.14.0正式发布,也就是用户期待已久的圆周率(约3.14)版本,再加上谐音梗可戏称为π...

第一篇:如何使用 uv 创建 Python 虚拟环境

想象一下,你有一个使用Python3.10的后端应用程序,系统全局安装了a2.1、b2.2和c2.3这些包。一切运行正常,直到你开始一个新项目,它也使用Python3.10,但需要...

我用 Python 写了个自动整理下载目录的工具

经常用电脑的一定会遇到这种情况:每天我们都在从浏览器、微信、钉钉里下各种文件,什么截图、合同、安装包、临时文档,全都堆在下载文件夹里。起初还想着“过两天再整理”,结果一放就是好几年。结果某天想找一个发...