当前位置: 首页 > news >正文

解决OpenCV保存视频 视频全部为绿色的bug

目录

项目场景:

问题描述

原因分析:

解决方案:


项目场景:

使用OpenCV-Python 保存视频,视频为numpy array格式,保存的视频全部为无意义的绿色。


问题描述

用opencv 保存的视频会出现全部为绿色的情况,非常诡异!

代码如下:

    output_path = os.path.join(save_path, video_name+"_pose.mp4")fourcc = cv2.VideoWriter_fourcc(*'mp4v')video_writer = cv2.VideoWriter(output_path, fourcc, fps, (sample_size[1], sample_size[0]))for frame_np in pose:frame_bgr = cv2.cvtColor(frame_np, cv2.COLOR_RGB2BGR)video_writer.write(frame_bgr)        video_writer.release()


原因分析:

如果将fps改成24.0,是可以保存成功的!因此问题就在于保存不同的fps的时候出现了问题!

    fps=24output_path = os.path.join(save_path, video_name+"_pose.mp4")fourcc = cv2.VideoWriter_fourcc(*'mp4v')video_writer = cv2.VideoWriter(output_path, fourcc, fps, (sample_size[1], sample_size[0]))for frame_np in pose:frame_bgr = cv2.cvtColor(frame_np, cv2.COLOR_RGB2BGR)video_writer.write(frame_bgr)        video_writer.release()

解决方案:

其实用 torchvision.io 中的 write_video 保存更方便,这个API基于PYAV开发的。

例子如下:

import torch
import torchvision.io# 假设 video_tensor 是你的视频帧张量,形状为 [T, H, W, C]
# 这里创建一个随机张量作为示例
T, H, W, C = 10, 224, 224, 3  # 例如,10帧,大小为224x224的RGB图像
video_tensor = torch.randint(0, 256, (T, H, W, C), dtype=torch.uint8)# 指定输出视频文件的名称
filename = 'output_video.mp4'# 指定帧率(fps)
fps = 30# 调用 write_video 函数保存视频
torchvision.io.write_video(filename, video_tensor, fps, video_codec='libx264')

http://www.lryc.cn/news/451986.html

相关文章:

  • 手机使用指南:如何在没有备份的情况下从 Android 设备恢复已删除的联系人
  • TS系列(6):函数
  • 网盘能否作为FTP替代产品?企业该如何进行FTP国产化替代?
  • Python操作MongoDB
  • Redis --- 第二讲 --- 特性和安装
  • 基于单片机的两轮直立平衡车的设计
  • 828华为云征文|部署个人知识管理系统 SiyuanNote
  • MATLAB中pcg函数用法
  • Veritus netbackup 管理控制台无法连接:未知错误
  • 安全中心 (SOC) 与 网络运营中心 (NOC)
  • WPS使用越来越卡顿
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.5-2.6
  • C# 解决Excel边框样式无法复制问题及实现格式刷功能
  • 前端组件化开发
  • 异步操作实现线程池
  • 长期提供APX515/B原装二手APX525/B音频分析仪
  • 【数据库差异研究】update与delete使用表别名的研究
  • idea远程连接docker
  • Docker 安装 ClickHouse 教程
  • 过渡到内存安全语言:挑战和注意事项
  • 在Pycharm中安装Cv2
  • 减少重复的请求之promise缓存池(构造器版) —— 缓存promise,多次promise等待并返回第一个promise的结果
  • cdq+bitset处理高维偏序
  • 敏捷开发和传统开发,你更适合哪种?
  • python之with
  • vue3 升级实战笔记
  • 利用函数模块化代码实操 ← Python
  • Java高效编程(12):重写toString方法
  • 谷歌给到的185个使用生成式AI的案例
  • 程序员如何通过专业与软技能提升核心竞争力