当前位置: 首页 > 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.mrgr.cn/news/41719.html

相关文章:

  • string的实现(下)
  • 生信初学者教程(二十三):REF+SVM筛选候选标记物
  • 大语言模型入门(三)——提示词编写注意事项
  • MYSQL 乐观锁
  • 路由交换实验指南
  • [产品管理-41]:什么是变量、属性、特征、特性?他们的相同点、不同点?
  • C++ 语言特性10 - 委托构造函数
  • 开放式耳机哪个品牌好?分享几款不错的开放式蓝牙耳机
  • C++常引用详解
  • Java开发类加载器实现机制
  • Visual Studio 使用技巧之界面布局
  • 浏览器 F12 application 应用程序面板
  • 10. 模块
  • 大学城就餐推荐系统小程序的设计
  • 深入理解 Git 一个开发者的必备工具
  • 【2023工业3D异常检测文献】Shape-Guided: 基于形状引导和双记忆库的异常检测方法
  • 使用rust写一个Web服务器——async-std版本
  • vue3 + ts + cesium:绘制自由曲线(polyline)
  • 性能测试的方式有哪些
  • C++ 双端队列(deque)的深入理解