NV12转换为I420

常用视频格式转换nv12,i420,i444,p010 文章目录视频存储格式NV12转I420 视频存储格式 P010格式与NV12格式一样,区别就是两个字节存一个像素值。 Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 阅读详情





int nv12Toi420(int nWidth,int nHeight,int nPitch,CUdeviceptr* Src_NV12,unsigned char *Dst_i420)
{
	if(m_pTempBufSize < nPitch * nHeight * 3 / 2)
	{
		m_pTempBufSize = nPitch * nHeight * 3 / 2;
		if(m_pBuf)
		{
			free(m_pBuf);
			m_pBuf = (unsigned char* )malloc(m_pTempBufSize);
		}
		else
			m_pBuf = (unsigned char* )malloc(m_pTempBufSize);
	}
	
	memcpy(m_pBuf, Src_NV12, nPitch * nHeight * 3 / 2);
	int dst_pos = 0;
	int src_pos = 0;

	for (int i = 0;i<nHeight*3/2;i++)
	{
		memcpy(Dst_i420+dst_pos, m_pBuf+src_pos, nWidth);
		dst_pos += nWidth;
		src_pos += nPitch;

	}

	int i = 0;
	// Write Cb
	for(int idx = 0; idx <  (nWidth*nHeight/2); idx+=2)
	{
		memcpy(m_pUV[0] + i, Dst_i420+nWidth*nHeight + idx,1);
		i++;
	}
	i =0;
	// Write Cr
	for(int idx = 1; idx <  (nWidth*nHeight/2); idx+=2)
	{
		memcpy(m_pUV[1]+i,Dst_i420+nWidth*nHeight+idx,1);
		i++;
	}

	memcpy(Dst_i420 + nWidth*nHeight, m_pUV[0],nWidth*nHeight/4);
	memcpy(Dst_i420+nWidth*nHeight + nWidth*nHeight/4, m_pUV[1], nWidth*nHeight/4);

	return 1;

}






深入解析NV12、I420、I444与P010视频格式转换原理及实践 本文深入解析了NV12、I420、I444与P010四种主流视频格式的存储原理与核心差异,重点阐述了色度抽样技术如何影响数据量与画质。文章通过清晰的代码示例,详细演示了NV12转I420、NV12转I444及P010转I420等关键的视频格式转换实践,并探讨了性能优化策略与典型应用场景,为多媒体开发与处理提供实用指导。 阅读详情

相关推荐

【Codecs系列】颜色空间转换CSconvert:I420转NV12

Date: 2018.5.31 I420即常用的YUV420P格式,YUV存储按照Y\U\V三个平面顺序存放。 NV12是YUV420sp的格式,Y分量占用一个平面,UV分量交错存放占用一个平面。 I420toNV12.c #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; in...

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 1557

c/c++ NV12转I420P

NV12及I420格式不再赘述,下面代码只适用width与stride相等的情况。如果stride与width不相等的时候,需要按照步长计算。 思路1:重新new一块I420buff,把nv12中UV分量分别复制到I420对应的位置中 #include <cstdint> void Nv12toI420(uint8_t nv12[], int width, int height, uint8_t** i420Frame) { int yByteSize = width * height.

点点滴滴 1014

图像处理的几个算法,包括NV12与YUV420 YUV422的转换

针对YUV的图像变换算法,锐化、自动对比等;NV12与YUV420 YUV422的数据转换

C实现NV12转I420

NV12转I420

Nyquistfoot的博客 641

I420转NV21(NV12)

自封的纯C代码,可实现YUV数据基本的I420转NV21/NV12功能

I420toNV21(NV12)及绘制黑框

自封的纯C函数,YUVI420toNV21(NV12)代码及结果,绘制黑框及结果

YUV数据格式的转换(NV12ToI420)和旋转(旋转90度)

1、几种常见格式的YUV数据 I420(YU12):先存Y,然后U,最后V。YYYYYYYYUUVV YV12:先存Y,然后V,最后U。YYYYYYYYVVUU NV12:先存Y,然后UV交错存储,iOS下这种模式。YYYYYYYYUVUV NV21:先存Y,然后VU交错存储,Android下这种格式。YYYYYYYYVUVU 2、NV12转I420 因为NV12的YUV数据UV是交错...

yp18792574062的博客 4935

PCL读取点云数据报错:Failed to find match for field ‘x‘/ ‘y‘/ ‘z‘.

原因:使用matlab生成的pcd文件,点云数据是双精度类型,pcl处理的点云数据是单精度类型。解决方案:使用matlab生成的点云坐标单精度化,然后在生成点云加以存储。

little_white138的博客 866

libyuv接口NV12ToI420的实际使用

libyuv在配合式2.0中的应用 1、// Convert NV12 to I420. LIBYUV_API int NV12ToI420(const uint8* src_y, int src_stride_y, const uint8* src_uv, int src_stride_uv, uint8* dst_y, int dst_stride_y, uint8* dst_u, int d...

yuanouwenhuawei的博客 3364

数字化转型是什么?核心又是什么呢?

01到底什么是数字化转型? 这时候你或许要问笔者了,既然你说使用新兴技术不是数字化转型,那使用新的商业模式总该是数字化转型了吧?你比如阿里巴巴,作为我们中国人最熟悉的开展电子商务的公司,它可以说是新的商业模式最大的开创者了:阿里巴巴是世界上最大的零售商,却没有任何一家实体店和任何库存;再比如优步(Uber),我们非常熟悉的一个线上打车平台,它可以算是世界上最大的出租车公司了,但是它不拥有一辆出租车。还有近些年来,我们经常使用的的旅游房屋租赁社区爱彼迎(Airbnb),它可以为消费者提供多样的住宿信息..

weixin_58342023的博客 4043

linux操作系统使用以太网连接ubuntu,设置固定ipv4

首先,您需要确定要配置的网络接口。可以使用ifconfig -a或ip addr命令来列出当前系统上的所有网络接口及其相关信息。找到您要配置的网络接口名称,例如eth0、ens33或enp0s3;保存并关闭文件后,您需要重启网络服务以使更改生效。在linux操作系统中,要使用交换机连接以太网可以直接使用交互界面;如果你的操作系统没有交互界面,你可以使用命令方式配置;点击ipv4,方式为手动,可以设置ip和子网了;开头,后接网络接口名称。第三步:点击有线最右边圆形控件;第二步:点击有线设置;

2301_79311842的博客 2403

图像处理算法大全(基于libyuv或IPP)----NV12转成I420,RGB24,ARGB集合

《周星星教你学ffmpeg》技巧libyuv源码:static void NV12ToI420(BYTE* pNV12_Y, BYTE* pNV12_UV, BYTE* pYV12, int width, int height) { libyuv::NV12ToI420(pNV12_Y, width, pNV12_UV, width, pYV12, width, pYV12 + height*width, width / 2, pYV12 + height*width * 5 / 4, width

xjb2006的专栏 1632

数值天气预报期末复习

数值天气预报期末复习

m0_60394632的博客 7678

Android中yv12、I420、nv12、nv21之间相互转换

I420对应YUV420P,平面格式存储,4:2:0采样,U在前,V在后。 YV12对应YUV420P,平面格式存储,4:2:0采样,V在前,U在后。 NV12对应YUV420SP,半平面格式存储,4:2:0采样,U在前,V在后。 NV21对应YUV420SP,半平面格式存储,4:2:0采样,V在前,U在后。 对应的数据存储格式是: I420: YYYYYYYY UU VV YV12: YYYYY...

feng海涛 3838

AI 编程组合之deepseek+vscode+cline插件,使用deepseek大模型实现代码自动生成

本文介绍了VSCODE下cline插件的安装结合DeepSeek-V3,ai编程的组合套件,举了两个例子一个是生成登录页面,一个是生成贪吃蛇游戏

技术博客 7万+

基于Matlab/Simulink的三相并网逆变器dq阻抗扫频仿真与理论建模实践指南

本文详细介绍了基于Matlab/Simulink的三相并网逆变器dq阻抗扫频仿真与理论建模实践方法。通过搭建仿真模型、设计扰动注入策略和FFT分析,精确提取阻抗特性,有效预测系统稳定性,为新能源并网系统设计提供可靠指导。

gold的博客 775

yv12、I420、nv12、nv21区别及相互转换方法

YUV420P,Y,U,V三个分量都是平面格式,分为I420和YV12。I420格式和YV12格式的不同处在U平面和V平面的位置不同。在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)。 YUV420SP, Y分量平面格式,UV打包格式, 即NV12。 NV12与NV21类似,U 和 V 交错排列,不同在于UV顺序。 I420: YYYYYYYY UU VV =>YUV420P YV12: YYYYYYYY VV UU =>YUV...

zhizhuodewo6的博客 4161

OpenHarmony深度定制:从系统到模块的全景剖析与自定义模块实战

目标:在中新增一个算法库,让产品可直接调用。关闭不用的 20+ 系统部件,ROM 缩小 50 %;为自家芯片新增专用驱动模块,快速点亮开发板;内将核心算法库以部件形式集成,实现商业闭源。万物互联时代,差异化才是护城河。

m0_67505153的博客 1030

yv12、I420、nv12、nv21相互转换

YUV420P,Y,U,V三个分量都是平面格式,分为I420和YV12。I420格式和YV12格式的不同处在U平面和V平面的位置不同。在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)。 YUV420SP, Y分量平面格式,UV打包格式, 即NV12。 NV12与NV21类似,U 和 V 交错排列,不同在于UV顺序。 I420: YYYYY

cffishappy的专栏 1万+

[Dify实战] 做企业内部助手时,最容易被低估的不是提示词,而是权限、状态同步和反馈回写

这篇文章围绕“做企业内部助手时”这个具体问题展开,很多团队做企业内部助手时,最先优化的是提示词,但真正决定系统能不能上线长期跑下去的,往往是权限边界、状态同步和反馈回写闭环。正文会结合Dify拆解节点设计、配置建议和测试样例,补充关键步骤、检查点和常见坑,帮助读者判断第一版该怎么落地,并把经验复用到自己的真实业务场景中。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 68

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java yuv420p转nv_颜色空间转换CSConvert:YUV420P(I420)转NV12

1、颜色空间I420和NV12说明I420即常用的YUV420P格式,YUV存储按照Y\U\V三个平面顺序存放。NV12是YUV420sp的格式,Y分量占用一个平面,UV分量交错存放占用一个平面。2、I420转NV12实现I420toNV12.c#include #include #include int main(int argc, char** argv){int width, height;...

weixin_33547353的博客 581

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OpenCV实战:BGR、YUV_I420与NV12格式转换原理与性能优化

让我们从最基础的BGR格式说起,这是OpenCV默认的图像存储格式,每个像素由蓝(B)、绿(G)、红(R)三个分量组成,排列顺序和常见的RGB正好相反。因为YUV将亮度(Y)和色度(UV)分离,这种设计有两个巨大优势:一是兼容黑白电视(只处理Y分量),二是可以通过降低色度分辨率来压缩数据量。后来通过内存分析工具才发现,I420的UV是分开存储,而NV12是交错存储。这就引出了格式转换的需求。I420格式:前1920x1080字节存储Y分量,接着是1920x540/4的U分量,最后是同样大小的V分量。

weixin_30437847的博客 166

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

yuv420格式nv12,nv21,I420,YV12互转

YUV格式有两大类:planar和packed。 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。 对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。 YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述...

yishianran的博客 5544

别再混淆了!一文搞懂OpenCV中YUV家族(BGR、YUV、I420、NV12)的内存排列与转换

本文深入解析OpenCV中YUV家族(BGR、YUV、I420、NV12)的内存布局与转换方法,帮助开发者彻底理解不同格式的核心差异和内存排列特性。通过实战代码演示和性能优化技巧,解决视频处理中的常见问题,提升开发效率。

weixin_30470643的博客 462

yuv转换之I420转NV12

y分量数据大小是1920 * 1080字节,1920就是它的一行,从y地址从一次取一行数据,然后取1080次。但是有步长,正常你第一个从ptr_y地址取第一行数据,第二次是从ptr_y+1920取数据是吧,但是有步长,这个就变为ptr_y+2048取数据。代码理解是有两个不同指针,记录着两块地址,一款放y分量数据,一路放UV数据,UV交错放在一起。,w按512字节对齐就是每一行的数据是512的倍数,不足的会自动填充数据的。思路:获取y数据写入,然后获取u数据写入,然后获取v数据写入文件。

33233的博客 866
上一篇: H264学习方法-心历路程-资料搜集
下一篇: 负数在计算机中的表示
tkp2014
博客等级 码龄12年 137粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值