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

news2024/11/24 6:39:35

目录

项目场景:

问题描述

原因分析:

解决方案:


项目场景:

使用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=24
    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()

解决方案:

其实用 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.coloradmin.cn/o/2186000.html

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

相关文章

Webpack模式-Resolve-本地服务器

目录 ResolveMode配置搭本地服务器区分环境配置 Resolve 前面学习时使用了各种各样的模块依赖,这些模块可能来自于自己编写的代码,也可能来自第三方库,在 Webpack 中,resolve 是用于解析模块依赖的配置项,它决定了 We…

FTP应用篇:低功耗4G模组Air780EP AT开发

低功耗4G模组Air780EP支持全系列的AT指令以及LuatOS脚本二次开发。 今天我们详细讲解Air780EP模组FTP应用的多个AT命令示例。 本文同样适用于以下型号: Air700ECQ/Air700EAQ/Air700EMQ Air780EQ/Air780EPA/Air780EPT/Air780EPS Air780E/Air780EX/Air724UG… 一、相…

ARM 架构、cpu

一、ARM的架构 ARM是一种基于精简指令集(RISC)的处理器架构. 1、ARM芯片特点 ARM芯片的主要特点有以下几点: 精简指令集:ARM芯片使用精简指令集,即每条指令只完成一项简单的操作,从而提高指令的执行效率…

是什么导致position: sticky;top: 0;滚动到一屏高度就失效的呢?

例子代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>html…

【笔记】如何将本地的.md变成不影响阅读的类pdf模式

在1处搜索markdown viewer 在2处勾选url复选框 将需要阅读的md文件的本地路径去除双引号&#xff08;如果没有双引号不必做任何处理&#xff09; 直接放进浏览器url地址栏 正常显示图片与文字 解决

C语言数组和指针笔试题(四)

目录 二维数组例题一例题二例题三例题四例题五例题六例题七例题八例题九例题十例题十一 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412;个人主页 &#x1f978;&#x1f978;&#x1f978;C语言 &#x1f43f;️…

设计模式之访问者

一、访问者设计模式概念 访问者模式&#xff08;Visitor&#xff09; 是一种行为设计模式&#xff0c; 它能将算法与其所作用的对象隔离开来。 适用场景 如果你需要对一个复杂对象结构 &#xff08;例如对象树&#xff09; 中的所有元素执行某些操作&#xff0c; 可使用访问者模…

King3399 SDK(ubuntu文件系统)编译简明教程

该文章仅供参考&#xff0c;编写人不对任务实验设备、人员及测量结果负责&#xff01;&#xff01;&#xff01; 0 引言 文章主要介绍King3399&#xff08;瑞芯微rk3399开发板&#xff0c;荣品&#xff09;官方SDK&#xff08;Ubuntu文件系统&#xff09;编译过程&#xff0c…

Linux bash脚本 远程开发环境配置

参考资料 太香了&#xff0c;VSCode远程开发插件&#xff0c;值得一试Visual Studio Code で Remote SSH する。Managing extensions 目录 一. 远程开发必备二. 连接远程开发服务器三. 安装远程开发插件 一. 远程开发必备 ⏹ VSCode插件 Remote - SSH 通过使用 SSH 链接虚拟…

司法质量改善:巡回法庭的准自然实验(2000-2022年)(原始数据、计算代码、最终计算结果(Excel和Dta)和参考文献)

巡回法庭的设立背景 最高人民法院自2015年起分批次设立地方巡回法庭&#xff0c;以期改善司法质量&#xff0c;促进司法公正。这种改革措施为研究提供了一个独特的机会&#xff0c;可以通过准自然实验的方法来评估其效果。 2000-2022年司法质量改善&#xff1a;巡回法庭的准自…

PYTHON实现HTTP request的一些有用的函数

前言 我们知道&#xff0c;当需要设计一个程序和服务器进行交互时&#xff0c;往往会用到HTTP的request&#xff0c;即服务器有一个对外接口REST API&#xff0c;因此当向服务器发送符合格式要求的HTTP request时&#xff0c;服务器会给出响应&#xff0c;甚至执行一些任务。如…

机器学习模型算法

前言 机器学习离不开数据、和模型算法&#xff0c;常用的套路包含数据预处理、模型学习、模型评估、样本预测几个步骤。 数据预处理&#xff1a;从原始raw数据&#xff0c;经过&#xff08;特征处理幅度缩放、特征选择、维度约减、采样&#xff09;&#xff0c;输出测试集和训…

Java 16Java 17(LTS版本)新特性概述

一、Java 16 发布于2021年3月16日。Java 16主要特性有&#xff1a; JEP 338&#xff1a;Vector API (Incubator) 向量 API&#xff08;第一轮孵化&#xff09; JEP 387&#xff1a;Elastic Metaspace 弹性元空间 JEP 389&#xff1a;Foreign Linker API (Incubator) 外部链接…

鸿蒙OpenHarmony

开源鸿蒙系统编译指南 Ubuntu编译环境配置第一步&#xff1a;Shell 改 Bash第二步&#xff1a;安装Git和安装pip3工具第三步&#xff1a;远程仓配置第四步&#xff1a;拉取代码第五步&#xff1a;安装编译环境第六步&#xff1a;本地编译源码 Windows开发环境配置第一步&#x…

生信初学者教程(二十四):筛选交集特征

文章目录 介绍加载R包导入数据重叠的重要特征重要特征的韦恩图输出结果总结介绍 在数据分析和机器学习项目中,特征选择是一个至关重要的步骤,它有助于识别数据集中与目标变量最相关的特征。当通过不同的机器学习方法筛选出重要特征时,对这些特征取交集以识别核心特征,是一种…

【重学 MySQL】五十、添加数据

【重学 MySQL】五十、添加数据 使用INSERT INTO语句添加数据基本语法示例插入多行数据注意事项 使用LOAD DATA INFILE语句批量添加数据其他插入数据的方式注意事项 在MySQL中&#xff0c;添加数据是数据库操作中的基本操作之一。 使用INSERT INTO语句添加数据 使用 INSERT IN…

资源《Arduino UNO R3 proteus 仿真工程》说明。

资源链接&#xff1a; Arduino UNO R3 proteus 仿真工程 1.文件明细&#xff1a; 2.文件内容说明 包含&#xff1a;AD工程、原理图、PCB。 3.内容展示 4.简述 该文件为proteus工程&#xff0c;用于Arduino uno r3仿真。 因为软件自动运行&#xff0c;所以最小系统上没有…

全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字符串

全网最适合入门的面向对象编程教程&#xff1a;55 Python 字符串与序列化-字节序列类型和可变字节字符串 摘要&#xff1a; 在 Python 中&#xff0c;字符编码是将字符映射为字节的过程&#xff0c;而字节序列&#xff08;bytes&#xff09;则是存储这些字节的实际数据结构&am…

论文笔记:iCaRL: Incremental Classifier and Representation Learning

1. Contribution 提出了一种新的训练策略&#xff0c;iCaRL&#xff1a;允许以增量方式学习&#xff1a;只需要同时存在一小部分类别的训练数据&#xff0c;新类别可以逐步添加。同时学习分类器和数据表示&#xff1a;iCaRL能够同时学习强大的分类器和数据表示&#xff0c;这与…

OpenGL ES MVP/变换投影矩阵(8)

OpenGL ES MVP/变换投影矩阵(8) 简述 通过前面几节的学习&#xff0c;目前我们已经可以渲染自己想要的图像&#xff0c;也可以通过纹理加载图片进行渲染。接下来我们来学习一下MVP&#xff0c;这里的MVP不是Android应用开发里的框架MVP&#xff0c;而是Model&#xff0c;View…