NV21、NV12、YV12、RGB、YUV、RGBA、RGBX8888:从内存布局到跨平台开发实战

图形图像基础知识(1)---- RGB/YUV 颜色格式 其中的**“Y”**表示明亮度,也就是灰阶值,即黑到白的范围值,所以只有Y值的图像是黑白的,RGB颜色空间以 R(Red:红)、G(Green:绿)、B(Blue:蓝) 三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,所以俗称三基色模式。将Y、U、V的三个分量分别存放在不同的存储空间中,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。将Y、U、V值按照像素存储在相同的存储空间,和RGB的存放方式类似,每个像素点的Y,U,V是连续交替存储的。每个像素点都存储对应的。 阅读详情

1. 图像格式的江湖:YUV与RGB的恩怨情仇

第一次接触图像格式时,我被NV21、NV12这些字母数字组合搞得头晕眼花。直到有次调试Android相机预览,画面出现诡异的绿色条纹,才意识到这些格式选择直接影响着内存占用和渲染效率。举个实际例子:Android Camera2 API默认输出的NV21格式,在1080p分辨率下每帧需要占用3.1MB内存,而同样分辨率的RGBA8888却要8.3MB——这就是YUV的魔力。

YUV家族采用亮度(Y)与色度(UV)分离的存储方式,源自模拟电视时代兼容黑白/彩色电视的智慧。现代数字图像处理中,这种分离带来两大优势:一是允许对色度信息进行子采样(如4:2:0),在几乎不损失视觉质量的前提下减少带宽;二是方便视频编解码器直接处理。而RGB家族(包括RGBA、RGBX8888)则是图形渲染管线的"母语",GPU对其有原生优化,但每个像素必须完整存储所有颜色分量。

关键差异对比表:

特性 YUV420系列(NV21/NV12/YV12) RGB888 RGBA8888
单像素位宽 12bit(实际平均) 24bit 32bit
内存布局 平面/半平面 紧密打包 紧密打包
适用场景 视频采集/编解码 图形渲染 透明合成
采样率 4:2:0 4:4:4 4:4:4:4
yuv分量提取(NDK:libyuv) 通过ImageReader获得数据来源借助libyuv做转换 Image image = mImageReader.acquireLatestImage() 图片格式决定了image里面planes有几个数组 如下: /** * Only a subset of the formats defined in * {@link android.graphics.ImageFormat ImageFormat} and * {@link android.graphics.P 阅读详情

相关推荐

Android Camera开发避坑指南:HAL_PIXEL_FORMAT_* 与 ImageFormat.* 到底怎么选?

本文深入解析Android Camera开发中HAL_PIXEL_FORMAT_*与ImageFormat.*的图像格式对应关系,提供场景驱动的选型策略和性能优化技巧。从YUV到RGB格式的映射逻辑,到实时预览、高分辨率拍照和视频录制的具体配置方案,帮助开发者避免常见图像错乱问题,提升Camera应用开发效率。

weixin_42524750的博客 262

Android Camera开发:从HAL_PIXEL_FORMAT到ImageFormat的映射与实战解析

本文深入解析Android Camera开发中HAL_PIXEL_FORMAT与ImageFormat的映射关系,涵盖YUV、RGB及特殊格式的对应关系与实战应用。通过详细代码示例和常见问题解决方案,帮助开发者正确处理图像格式转换,优化Camera2 API配置,提升图像采集与处理效率。

weixin_31421613的博客 217

i.MX G2D硬件加速实战:从API解析到嵌入式图形性能优化

在嵌入式图形开发中,硬件加速是提升界面流畅度和视频处理性能的关键技术。其核心原理是通过专用硬件单元(如2D图形加速器)接管CPU的图形计算任务,实现高效的位块传输、色彩空间转换和图像合成。这项技术能显著降低CPU负载,提升系统实时性,广泛应用于车载中控、工业HMI和多媒体设备等场景。以NXP i.MX系列处理器的G2D API为例,开发者需深入理解其内存对齐、缓存一致性及混合渲染机制,才能有效规避性能瓶颈。本文结合YUV转RGB、Alpha混合等高频操作,详解G2D在嵌入式Linux下的实战应用与调试技巧。

weixin_29839415的博客 174

大模型-高通平台性能测试示例-2

在QNN中,可以使用(genis-t2t-run)和这两个工具来进行推理的性能分析。支持在QNX操作系统或Android操作系统上进行性能分析。:提供基本的性能数据,如运行时间、资源消耗等。:提供更详细的性能数据,可能包括各个操作的执行时间、资源使用情况等。:是指在性能分析的同时进行代码质量检查,以发现潜在的问题。:是指跟踪和分析神经网络中各个操作的性能,以优化网络结构或参数。

点滴的岁月 1494

告别手动连接!一键搞定Mumu模拟器与Android Studio的ADB配置

本文详细介绍了如何通过编写自动化脚本,一键完成Mumu模拟器与Android Studio的ADB连接配置。告别繁琐的手动命令输入,该脚本能智能检查环境、判断连接状态并自动处理端口转发,显著提升Android开发者的调试与测试效率。

yog99的博客 498

彻底卸载Ubuntu双系统,并完美回收100G空间给D盘

本文记录了安全卸载Ubuntu双系统并回收磁盘空间的全过程。作者首先通过Windows命令行彻底清除Ubuntu启动项,避免GRUB引导报错;随后在磁盘管理中删除Linux分区,将100G未分配空间合并至相邻的D盘。针对C盘空间不足问题,作者采用Dism++清理系统文件,并将用户文档、聊天记录等迁移至扩容后的D盘。最终实现了引导纯净、空间合理分配的目标,特别强调分区扩展必须遵循"相邻原则",建议通过间接迁移而非直接扩容来优化系统盘空间管理。

2403_85993278的博客 1514

Jetson AGX ORIN硬件初始化和环境部署

orin预安装了ubuntu20.04,只需开机,像重装系统一样设置用户信息即可,可以参考官网的教程[https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit],官网提供了两种方式:一种是orin + 显示器,orin有提供DP接口,你需要准备一台显示器,最好也是有DP口的,因为我用DP转HDMI的连的,分辨率会受影响。确认安装的路径,一般直接回车安装在默认的 /home/你的名字/anaconda3。

TracyGC的博客 3836

libfacedetection 框架阅读及扩展经验

libfacedetection 框架源码解析与扩展心得1. libfacedetection 框架简介2. 源码解析2.1 facedetectcnn.h2.2 facedetectcnn.cpp2.3 facedetectcnn-model.cpp3. 其他层的扩展--depthwise convolution 前段时间因为工作需要,对libfacedetection框架做了些扩展,在阅读源...

weixin_42616332的博客 1500

用Python+NumPy手把手实现分数阶傅里叶变换(FRFT),搞定线性调频信号分析

本文详细介绍了如何使用Python和NumPy实现分数阶傅里叶变换(FRFT),特别针对线性调频信号(Chirp信号)分析。通过从零开始的代码实现和可视化案例,展示了FRFT在时变信号处理中的强大能力,帮助工程师和研究人员高效分析频率随时间变化的信号。

weixin_29062823的博客 218

安装测试豆包多模态纯视觉驱动-UI-TARS基于GUI的自动化智能体模型---AI大模型应用探索0010

字节跳动开源的UI-TARS项目基于Apache 2.0协议可商用,但最新桌面版v0.3.0移除了exe安装包。建议下载旧版v0.2.4的exe安装包进行安装,下载地址为:https://github.com/bytedance/UI-TARS-desktop/releases。注意要区分主项目UI-TARS和桌面版UI-TARS-desktop两个不同仓库。

添柴程序猿的专栏 676

SAP-ABAP:接口多继承与复合接口设计:复杂业务场景下的能力组合实现方案

本文介绍了ABAP中通过接口多继承与复合接口设计实现能力组合的方案。文章首先辨析了类实现多个接口与接口继承接口的核心概念,指出ABAP虽不支持类多继承,但可通过这两种机制灵活组合能力。随后详细讲解了类实现多个接口的语法规则与三种调用方式,并给出了五个基础能力接口的设计示例(日志记录、权限校验、数据导出、消息通知、格式转换)。作者通过对比单继承与接口多重实现的差异,强调后者在解耦和扩展性上的优势,为复杂业务场景下的能力组合提供了实用解决方案。

baidu_35680696的博客 249

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: UniApp小程序隐私弹窗实战:从配置到自定义组件的完整指南
下一篇: C++全景图拼接算法实战:从特征匹配到图像融合的完整实现
java2000_test
博客等级 码龄19年 10粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值