python 用OpenCV 将图片转视频

import os
import cv2
import numpy as npcv2.VideoWriter()参数  cv2.VideoWriter() 是 OpenCV 中用于创建视频文件的类。它的参数如下:
filename:保存视频的文件名。
fourcc:指定视频编解码器的 FourCC 代码,用于将视频压缩成指定格式,例如:“XVID”、“MJPG”, "mp4v"等。可以使用 cv2.VideoWriter_fourcc() 函数来获取 FourCC 代码。
fps:指定视频帧率,即每秒显示的帧数。
frameSize:指定视频帧的大小,即视频的分辨率,可以使用 (width, height) 形式的元组来指定。
isColor:指定是否为彩色视频。如果为 True,则为彩色视频;如果为 False,则为灰度视频。
其中,前三个参数是必需的,后两个参数是可选的。例如:
fps = 25
cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, (640, 480))def resize_img():target_size = (1000, 1000)  # 所有图片缩放设置一致尺寸,目标尺寸path = './images'path_new = './images_new'if not os.path.exists(path_new):os.makedirs(path_new)filelists = []imglist = []for i in os.listdir(path):file_path = os.path.join(path, i)print(file_path)img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), cv2.IMREAD_COLOR)size = img.shapeh, w = size[0], size[1]target_h, target_w = target_size[1], target_size[0]# 确定缩放的尺寸scale_h, scale_w = float(h / target_h), float(w / target_w)print(f'scale_h:{scale_h}, scale_w:{scale_w}')scale = max(scale_h, scale_w) # 选择最大的缩放比率new_w, new_h = int(w / scale), int(h / scale)# 缩放后其中一条边和目标尺寸一致resize_img = cv2.resize(img, (new_w, new_h))# 图像上、下、左、右边界分别需要扩充的像素数目top = int((target_h - new_h) / 2)bottom = target_h - new_h - topleft = int((target_w - new_w) / 2)right = target_w - new_w - leftprint(f'top:{top} bottom:{bottom} left:{left} right:{right}') cv2.imwrite(os.path.join(path_new, f'new_{i}'), resize_img) # 写入本地文件# 填充至 target_w * target_hpad_img = cv2.copyMakeBorder(resize_img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=[0, 0, 0])# cv2.imshow('img', pad_img)# cv2.waitKey(1000)filelists.append(os.path.join(path_new, f'new_{i}'))imglist.append(pad_img)return filelists, imglistdef cut_img(scale):path = './images'path_new = './images_new'if not os.path.exists(path_new):os.makedirs(path_new)filelists = []imglist = []for i in os.listdir(path):file_path = os.path.join(path, i)print(file_path)img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), cv2.IMREAD_COLOR)size = img.shapeh, w = size[0], size[1]rate1 = scale.split(':')w1 = int((w - w * int(rate1[0]) / int(rate1[1])) / 2)w2 = int(w - (w - w * int(rate1[0]) / int(rate1[1])) / 2)resize_img = img[0:h, w1:w2]cv2.imwrite(os.path.join(path_new, f'new_{i}'), resize_img) # 写入本地文件filelists.append(os.path.join(path_new, f'new_{i}'))imglist.append(resize_img)return filelists, imglistdef image_to_video():scale = '1:1'  # 裁剪比例,并保持高度不变# scale = '3:4'# scale = '9:16'filelists, imglist = cut_img(scale) # 裁剪# filelists, imglist = resize_img() # 缩放fourcc = cv2.VideoWriter.fourcc(*'mp4v')im = cv2.imread(filelists[0])print(im.shape)shape1 = (im.shape[1], im.shape[0])    #需要转为视频的图片的尺寸, 视频的分辨率print('shape1:', shape1)fps = 1writer = cv2.VideoWriter('./output.mp4', fourcc, fps , shape1)# for file_path in filelists:#     print(file_path)#     img = cv2.imread(file_path)#     writer.write(img)for i in imglist:writer.write(i)writer.release()image_to_video()

 我们无法打开output3.mp4。这可能是因为文件类型不受支
持、文件扩展名不正确或文件已损坏,0xC00D36C4

如果生成的视频报这个错,一般是视频的分辨率 设置的不匹配

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis可视化工具Redis Desktop Manager mac功能特色

Redis Desktop Manager mac是一款非常实用的Redis可视化工具。RDM支持SSL / TLS加密,SSH隧道,基于SSH隧道的TLS,为您提供了一个易于使用的GUI,可以访问您的Redis数据库并执行一些基本操作:将键视为树,CRUD键…

hab_virtio hypervisor 虚拟化

Linux的 I / O 虚拟化 Virtio 框架 简而言之,virtio是半虚拟化管理程序中设备上的抽象层。virtio由Rusty Russell开发以支持他自己的虚拟化解决方案lguest。本文从准虚拟化和仿真设备的介绍开始,然后探讨的细节virtio。重点是virtio2.6.30内核发行版中的…

【华为数据之道学习笔记】6-4 打造数据供应的“三个1”

数据服务改变了传统的数据集成方式,所有数据都通过服务对外提供,用户不再直接集成数据,而是通过服务获取。因此,数据服务应该拉动数据供应链条的各个节点,以方便用户能准确地获取数据为重要目标。 数据供应到消费的完整…

Deployment Controller详解(上)

上一篇在《Kubectl 部署无状态应用》中介绍了如何使用 Deployment 部署五个 hello world 实例时,我们并没有详细探讨 Deployment Controller 的各项功能。因此,本文将深入介绍 Deployment Controller 的作用以及它能够完成的任务。 本文来自官方文档梳理…

深入理解依赖反转原则(DIP)

依赖反转原则是一个比较重要的架构原则,从定义上看是要依赖于抽象,不要依赖于细节, 这个听起来很简单,好像加个接口就完事了,大家的service都是一个接口配一个实现类,是不是依赖倒置呢?很显然不…

第11章 GUI Page417~418 步骤五 支持方框 使用宏定义

运行效果: 原来的创建item的方式: 使用宏定义的方式:

Java之LinkedList核心源码解读

LinkedList核心源码解读 LinkedList 是一个基于双向链表实现的集合类,经常被拿来和 ArrayList 做比较 LinkedList 插入和删除元素的时间复杂度? 头部插入/删除:只需要修改头结点的指针即可完成插入/删除操作,因此时间复杂度为 O…

PHP数组定义和输出

数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。 PHP中的数组与Java的数组不一样,需要有key(键)和value(值),相当于Java中数组和键值对的结合。 数组的定义 …

redis 从0到1完整学习 (六):Hash 表数据结构

文章目录 1. 引言2. redis 源码下载3. dict 数据结构4. 哈希表扩容与 rehash5. 参考 1. 引言 前情提要: 《redis 从0到1完整学习 (一):安装&初识 redis》 《redis 从0到1完整学习 (二):red…

【Linux笔记】用户和权限管理基本命令介绍

🍎个人博客:个人主页 🏆个人专栏:Linux学习 ⛳️ 功不唐捐,玉汝于成 目录 ​编辑 前言: 命令: whoami: passwd: useradd: userdel: chm…

css 实现满屏升空的气球动画

最终实现效果 demo放在最后了。。。。 问题一 怎么实现满屏气球?简单理解就是多个气球的合并,难道要写多个盒子吗?确实是这样子,但可以有更好的办法,其实就是通过原生操作多个盒子生成,所以只需要实现一个…

智能优化算法应用:基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工大猩猩部队算法4.实验参…

YZ系列工具之YZ03:高版本Excel的自定义菜单

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套一部VBA手册,教程分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的…

关于游戏性能优化的技巧

关于游戏性能优化的技巧 游戏性能优化对象池Jobs、Burst、多线程间隔处理定时更新全局广播缓存组件缓存常用数据2D残影优化2D骨骼转GPU动画定时器优化DrawCall合批处理优化碰撞层优化粒子特效 游戏性能优化 好久没有在CSDN上面写文章了,今天突然看到鬼谷工作室技术…

docker部署mysql主主备份 haproxy代理(swarm)

docker部署mysql主主备份 haproxy代理(swarm) docker部署mysql主主备份 docker部署mysql主主备份(keepalived)跨主机自动切换 docker部署mysql主主备份 haproxy代理(swarm) 1. 环境准备 主机IPnode119…

WSL移动ubuntu到其他盘的几个问题以及安装,使用过程中遇到bug记录

这里写目录标题 无法正常修改Ubuntu系统的默认用户解决方案1:解决方案2: 出现 id xxx no such userGUI不能正常显示 无法正常修改Ubuntu系统的默认用户 ubuntu移动到其他盘可以参考WSL Ubuntu子系统迁移到非系统盘 下面问题是我安装时遇到的&#xff0c…

with torch.no_grad()在Pytorch中的应用

with torch.no_grad()在Pytorch中的应用 参考: https://blog.csdn.net/qq_24761287/article/details/129773333 https://blog.csdn.net/sazass/article/details/116668755 在学习Pytorch时,老遇到 with torch.no_grad(),搞不清其作用&#…

Linux内核模块文件组成介绍

Linux驱动开发主要的工作就是编写模块,一个典型的Linux内核模块文件.ko 主要由以下几个部分组成。 模块加载函数(必须) 当通过insmod或modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作。 Linux内核模…

MyBatis关联查询(二、一对多查询)

MyBatis关联查询(二、一对多查询) 需求:查询所有用户信息及用户关联的账户信息。 分析:用户信息和他的账户信息为一对多关系,并且查询过程中如果用户没有账户信息,此时也要将用户信息查询出来&#xff0c…

竞赛保研 基于GRU的 电影评论情感分析 - python 深度学习 情感分类

文章目录 1 前言1.1 项目介绍 2 情感分类介绍3 数据集4 实现4.1 数据预处理4.2 构建网络4.3 训练模型4.4 模型评估4.5 模型预测 5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于GRU的 电影评论情感分析 该项目较为新颖,适合作为竞…