news 2026/7/28 20:20:36

视频与图片之间的相互转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
视频与图片之间的相互转换

文件目录:

1 视频生成图片

# 视频分解图片importcv2importos capture=cv2.VideoCapture("1.mp4")isOpened=capture.isOpened()# # 判断是否打开print(isOpened)# Truefps=capture.get(cv2.CAP_PROP_FPS)# 帧率width=capture.get(cv2.CAP_PROP_FRAME_WIDTH)height=int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))print(fps,width,height)print(round(fps))# 四舍五入i=0whileisOpened:ifi>=100:breakelse:i=i+1ret,frame=capture.read()# 读取每一张 flag frameifnotos.path.exists("image"):os.mkdir("image")filename=os.path.join("image",str(i)+".jpg")ifret==True:cv2.imwrite(filename,frame,[cv2.IMWRITE_JPEG_QUALITY,100])# 设置图片格式为.jpeg或者.jpg的图片质量,其值为0---100(数值越大质量越高),默认95print("end!")

2 图片生成视频

# 生成avi格式importcv2importos img=cv2.imread("image/1.jpg")videoName="2.avi"imgShape=img.shape size=(imgShape[1],imgShape[0])print(size)fourcc=cv2.VideoWriter_fourcc('M','J','P','G')videoWrite=cv2.VideoWriter(videoName,fourcc,5,size)# 100张图片,fps为5,则生成20秒的视频# videoName: 写入对象;-1表示支持的编码器;5表示5帧图像(帧率);size图片大小(宽,高)foriinrange(100):imgName=os.path.join("image",str(i+1)+".jpg")# 注意这个地方是i+1,不然读取0.jpg不行img=cv2.imread(imgName)videoWrite.write(img)videoWrite.release()print("end!")# 生成mp4格式(avi视频比mp4视频大)importcv2importos img=cv2.imread("image/1.jpg")videoName="2.mp4"imgShape=img.shape size=(imgShape[1],imgShape[0])print(size)fourcc=cv2.VideoWriter_fourcc(*'DIVX')videoWrite=cv2.VideoWriter(videoName,fourcc,5,size)foriinrange(100):imgName=os.path.join("image",str(i+1)+".jpg")img=cv2.imread(imgName)videoWrite.write(img)videoWrite.release()print("end!")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 20:18:50

Leetcode 111.二叉树的最小深度

Time: 20190901 Type: Easy 题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回它的最小深度 2. 来源…

作者头像 李华
网站建设 2026/7/28 20:18:46

技术人重启指南:从认知断层到工具链重建

1. 项目概述三年前按下暂停键时,我没想到重启编程需要如此漫长的热身。作为曾在某大厂带过技术团队的老兵,离职时GitHub上还有十几个活跃的开源项目。如今重新打开IDE,连最基本的依赖管理工具都换了三茬。这篇博客记录的正是一个技术人从&quo…

作者头像 李华
网站建设 2026/7/28 20:15:32

Java后端集成MixPush:统一推送服务SDK实战与生产环境最佳实践

1. 项目概述:为什么我们需要一个统一的推送服务端在移动互联网和物联网应用里,消息推送是连接用户与服务的核心生命线。想象一下,你开发的电商App,用户下单后需要实时收到订单状态变更;你的智能家居应用,需…

作者头像 李华
网站建设 2026/7/28 20:12:37

学习笔记之(IO流对象)IO中的异常处理

import java.io.FileOutputStream; import java.io.IOException;/** IO流的异常处理(IO流会出现很多异常,要注意)* try catch finally* * 细节:* 1. 保证流对象变量,作用域足够* 2. catch里面,怎么处理异常* 输出异常的信息,目的看到哪里出现了问题* …

作者头像 李华
网站建设 2026/7/28 20:04:26

Python操作MySQL数据库进阶指南:连接池与事务管理

1. Python操作MySQL数据库全景指南作为数据驱动应用的核心组件,数据库操作一直是Python开发者必须掌握的硬技能。MySQL作为最流行的开源关系型数据库,与Python的配合堪称黄金组合。但很多开发者停留在基础CRUD阶段,对连接池、事务管理等进阶用…

作者头像 李华