opencv 读取NV12格式(.yuv)文件,并转为RGB格式保存为JPG

2023-11-13

实测代码如下:


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

char buff[2000000];

int main()
{
	int width = 1280;
	int height = 960;
	int yuvNV12_size = width * height * 3 / 2;
	int rgb24_size = width * height;

	Mat yuvNV12;
	Mat rgb24;

	vector<cv::String> files_yuv;
	glob("D:/work/data-yuv/*.yuv", files_yuv);

	for (size_t i = 0; i < files_yuv.size(); i++)
	{
		printf("image file : %s \n", files_yuv[i].c_str());

		//1.read nv12 file to nv12 mat
		FILE* f = fopen(files_yuv[i].c_str(), "r");
	
		memset(buff, 0, 2000000);
		fread(buff, 1, yuvNV12_size, f);
		yuvNV12.create(height * 3 / 2, width, CV_8UC1);
		memcpy(yuvNV12.data, buff, yuvNV12_size);
		//2.cvt nv12 mat to rgb24 mat
		cvtColor(yuvNV12, rgb24, COLOR_YUV2BGR_NV12);
		//3.imwrite

		std::string savePath = files_yuv[i] + "_rgb.jpg";
		imwrite(savePath, rgb24);
		fflush(f);
		fclose(f);
	}

	return 0;
}

需要注意:

  1. char buff[2000000]预分配的数组较大,如果放置到main函数里面,会有如下报错:

0xC00000FD: Stack overflow (参数: 0x0000000000000001, 0x000000E3CE403000)。
Unhandled exception at 。。。。。 : Stack overflow (parameters: 0x0000000000000001。。。。。

解决办法:
(1)如测试用例,把该数组定义成全局变量;
(2)根据new, delete来创建数组:

char buff* = new char[2000000]; 
....
delete[] buff;

本测试用例会反复使用该buff,建议用方式1;

  1. c4996 error warning (fopen,fopen_s)

在Project properties->Configuration Properties->C/C+±>Preprocessor->Preprocessor Definitions 添加_CRT_SECURE_NO_WARNINGS

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv 读取NV12格式(.yuv)文件,并转为RGB格式保存为JPG 的相关文章

  • Python中使用cv2获取当前视频播放位置

    我正在尝试使用 CV2 和 Python 从播放视频中获取当前播放时间位置 如果可能 以毫秒为单位 目前我正在使用此示例代码来播放视频文件 import cv2 import numpy as np file name 2 mp4 wind
  • 使用 OpenCV 绘制固定的网格线集

    是否可以根据 OpenCV 示例文件中颜色检测示例的输出 在所有交叉点处绘制具有定义点的用户定义网格线 基本上 网络摄像头需要从您上方检测人的头部和肩膀 然后 当检测到一个人时 我需要网格线在那里 以便我能够知道在 x 轴和 y 轴 前额和
  • 如何在 Ubuntu 16.04 上安装适用于 Python 2.7 的 openCV 2.4.13?

    我尝试了很多在线帖子来安装 opencv 但它们不适用于 Ubuntu 16 04 有人可以给我安装 openCV 2 4 13 的步骤吗 我不久前制作了一个脚本 用于安装最新版本的 OpenCV 截至本答案的最后一次更新为 4 2 这是它
  • 使用 openCV 锐化视频图像

    我想使用 OpenCV 锐化我的图像 我在网上查看了一个示例 该示例正在对灰度图像执行锐化 我尝试了它 它工作得很好 然而 我现在尝试做同样的事情 但使用 RGB 颜色 所以我分别在三个通道上执行相同的功能 但它没有给我任何结果 图像与原始
  • 将 RGB 转换为黑色或白色

    我如何在Python中获取RGB图像并将其转换为黑白图像 不是灰度 我希望每个像素要么是全黑 0 0 0 要么是全白 255 255 255 流行的 Python 图像处理库中是否有任何内置功能可以完成此任务 如果不是 最好的方法是循环遍历
  • OpenCV Python 删除图像中的某些对象

    我正在使用带有 opencv 和 numpy 的 python 来检测天文中的星星 例如这个1 https i stack imgur com AKwEJ jpg图片 使用模板匹配 我可以用阈值检测星星 单击 2 2 https i sta
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 有没有办法检测图像是否模糊? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道是否有一种方法可以通过分析图像数据来确定图像是否模糊 估计图像清晰度的另一种非常简单的方法是使用拉普拉斯 或 LoG 滤波器并
  • Pyinstaller“无法执行脚本 pyi_rth_pkgres”并且缺少软件包

    这是我第一次在这里发布问题 因为我的大部分问题已经被其他人回答了 我正在 python 中开发 GUI 应用程序 并尝试使用 pyinstaller 将其打包到单个文件夹和 exe 中 以便于移植 目前 我使用 Windows 10 和 a
  • 如何将图像从 np.uint16 转换为 np.uint8?

    我正在创建一个图像 image np empty shape height width 1 dtype np uint16 之后我将图像转换为 BGR 模型 image cv2 cvtColor image cv2 COLOR GRAY2B
  • OpenCV Android - 无法解析相应的JNI函数

    我正在尝试按照此处概述的本教程使用 Opencv 设置 Android Studio https www youtube com watch v OTw GIQNbD8 https www youtube com watch v OTw G
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • 警告:发生了非法反射访问操作(java 中的便携式 opencv)

    我想做一个便携的opencv将依赖项添加到 maven 文件的应用程序pom xml 简化的代码是 import org opencv core Mat public class Builder public static void mai
  • Android API人脸检测与OpenCV/JavaCV人脸检测

    我在 Android 设备上使用了本地 Android 人脸检测 但它似乎很慢 而且我不太确定其可靠性 我还使用了 OpenCV 的人脸检测 但仅限于 PC 而不是 Android 设备 对于 Android 我猜我必须使用 JavaCV
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv
  • 将yuv420p原始数据转换为opencv图像

    我有来自 rtmp 服务器的原始数据 像素格式为 yuv420p 我使用管道来读取数据 但我不知道如何将原始数据解码为图像 command ffmpeg command extend loglevel fatal i rtmp localh
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • 使用 pygtk3 将 GUI 窗口添加到 python opencv2 程序

    我已经使用Python和Opencv2完成了一个程序 现在 我想向我的程序添加一个 GUI 窗口 我对 PyGtk3 有一些经验 因此 我修改了代码以采用 PyGtk3 但是 我遇到了错误 因此 我尝试了一个简单的程序来找出实际的错误 我的
  • 将向量 转换为大小为 (n x 3) 的 Mat,反之亦然

    我有 Point3d 向量 向量形式的点云 如果我使用 OpenCV 提供的转换 比如 cv Mat tmpMat cv Mat pts Here pts is vector

随机推荐

  • 基于OpenCV的手掌检测和手指计数

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 利用余弦定理使用OpenCV Python实现手指计数与手掌检测 手检测和手指计数 接下来让我们一起探索以下这个功能是如何实现的 OpenCV OpenCV 开源计算机视
  • 【Scala入门】Scala中的Map集合:key必须唯一

    Map 映射 是一种可迭代的键值对 key value 结构 所有的值都可以通过键来获取 Map 中的键都是唯一的 Map 也叫哈希表 Hash tables Map 有两种类型 可变与不可变 区别在于可变对象可以修改它 而不可变对象不可以
  • 微信小程序用自己的服务器视频打开很慢,微信小程序视频播放加载很慢

    当前 Bug 的表现 可附上截图 预期表现 复现路径 提供一个最简复现 Demo 微信小程序视频播放加载很慢 一直转圈 3分钟后才能播放 而且播放很卡 加了带宽和cdn也没有效果 官方的video组件是不是有bug let videotim
  • cern ROOT 读取TXT文件数据并画一个简单的直方图

    include
  • 微软晓晓朗读录音工具windows-文字转语音

    微软Edge的 大声朗读 功能大家都用过吧 这个功能非常好用 但是美中不足的是它不能保存语音文件 所以就有大神提取了edge的功能和接口作了这个软件 使用很简单 直接输入文字 然后点击 朗读 软件就会识别文字 然后自动播放语音 在下方的设置
  • sqli-labs第九十关

    这两关是时间盲注 Less 9 GET Bilnd Time based String Quotes 手工注入 这里使用sleep 函数 闭合方式还是跳过 id 1 1 1 爆破数据库 id 1 and if ascii substr da
  • 【学习笔记】rabbitmq设置队列ttl和使用延迟插件的代码示例

    文章目录 设置队列ttl 配置文件 生产者 消费者 设置消息ttl 延迟插件的使用 修改配置文件 修改生产者 修改消费者 设置队列ttl 代码架构 创建两个队列QA和QB 两者队列TTL分别设置为10S和40S 然后在创建一个交换机X和死信
  • 阿里P8大神讲解——Java,JVM内存模型

    在Java程序界流行着一种默认的说法叫 黄金5年 也就是一个程序员从入职的时间开始算起 前五年的选择直接影响着整个职业生涯发展方向和薪资走向 如何走好这5年很关键 如何彻底从一个菜鸟蜕变成 可以以不变应万变的职业大牛 这是一个涉及到自身专业
  • 朋友去华为面试,轻松拿到26K的Offer,羡慕了......

    最近有朋友去华为面试 面试前后进行了20天左右 包含4轮电话面试 1轮笔试 1轮主管视频面试 1轮hr视频面试 据他所说 80 的人都会栽在第一轮面试 要不是他面试前做足准备 估计都坚持不完后面几轮面试 其实 第一轮的电话面试除了一些常规的
  • 【电气专业知识问答】问:在何种事故情况下应立即停用电动机?

    电气专业知识问答 问 在何种事故情况下应立即停用电动机 答 1 发生危急人身安全情况 需要立即停用电动机的 2 电动机所带机械设备损坏至危险程度时 3 电动机起火冒烟 4 电动机强烈振动 窜轴或内部发生定 转子碰擦 5 电动机缺相运行 6
  • C#读写各类文件合集

    C 文件操作合集 一 利用字节流与文件流读写txt json文件 1 以文件的方式进行操作 2 以文件流的方式进行读写 3 以二进制数据流的方式进行读写 4 以文本流的方式进行读写 5 JOSN文件的读写 二 kernel32读写ini文件
  • 【论文笔记】疯狂的检测工具 —— 静态分析工具

    本文目标 精度论文 CryptoGuard High Precision Detection of Cryptographic Vulnerabilities in Massive sized Java Projects 主要针对大规模的
  • 【Pytorch Lighting】第 9 章:部署和评分模型

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Win10系统安装使用H3C HCL实验室(最新版)方法

    如果安装了wsl2虚拟机的 首先参照此教程将wsl版本降为1 https blog csdn net qq 26123545 article details 120169070 spm 1001 2014 3001 5501 如果之前的HC
  • CMake编译.dll并使用开源库SDE

    目录 环境 项目修改 编译 dll文件并确保它能正常使用 测试使用 dll文件 文件下载链接 环境 本篇博客所要做的是 Win10环境使用CMake编译一个开源C 库 这个库所有 h头文件和 cpp源文件都有了 将这个库编译为动态链接库 d
  • armbian安装图形桌面_Linux桌面环境(桌面系统)大比拼「附带优缺点」

    早期的 Linux 系统都是不带界面的 只能通过命令来管理 比如运行程序 编辑文档 删除文件等 所以 要想熟练使用 Linux 就必须记忆很多命令 后来随着 Windows 的普及 计算机界面变得越来越漂亮 点点鼠标就能完成很多工作 人们已
  • x86-64 汇编基础 ---- 记读 《CS: APP》

    x86 64 汇编基础 记读 CS APP 通常情况下 使用现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有效 1 看懂汇编码 1 汇编码的格式 ATT格式 这是GCC OBJDUMP和其它一些工具的常用格式 由
  • 推荐系统实战2——EasyRec 推荐框架环境配置

    推荐系统实战2 EasyRec 推荐框架环境配置 学习前言 先验条件 EasyRec仓库地址 EasyRec环境配置 一 EasyRec的下载 二 EasyRec的初始化 三 EasyRec的安装 四 一些额外的情况 学习前言 EasyRe
  • opencv 读取NV12格式(.yuv)文件,并转为RGB格式保存为JPG

    实测代码如下 include
  • OpenStack的搭建与使用

    初次接触open stack与Linux 如有错误与可改进的地方 恳请指出 一 搭建 一 配置推荐 系统 镜像 内存 储存 Linux centos7 6 16G 100G 二 前期准备 1 开启虚拟化 图2 1 开启虚拟化 2 关闭防火墙