两种格式数据介绍——bin 、 yuv文件

一、场景存储

  • 通常指的是用于存储摄像头或传感器原始采集数据的文件格式,尤其是在自动驾驶、机器人、安防、工业视觉等需要记录真实世界场景的应用中。
格式存储内容用途场景特点
.binLiDAR点云、毫米波雷达数据、IMU、GPS、原始传感器帧自动驾驶仿真、SLAM建图、数据回灌结构自定义、紧凑高效、需配合元数据使用
.yuv摄像头原始图像帧(如YUV420、NV12)视频录制、图像算法调试、回放测试无压缩/轻压缩、保留原始像素信息、兼容编解码器

举个例子:自动驾驶场景数据录制

一个典型的自动驾驶数据包(如ROS bag、Apollo record、NVIDIA DriveWorks log)中,可能会包含:

front_camera.yuv:前置摄像头原始图像帧(1920×1080,YUV420)
lidar_points.bin:每帧LiDAR点云(如每点12字节:x,y,z,intensity)
imu_data.bin:IMU传感器数据(时间戳、加速度、角速度)
gps_data.bin:GPS定位信息(经纬度、速度、航向)

这些文件通常按时间戳命名,用于后续离线仿真、算法训练、场景回放或问题复现。

1.📁 bin 格式数据

  • bin 是英文 binary(二进制)的缩写,通常表示二进制文件。
  • 特点:
    • 文件内容是以二进制形式存储的,不是人类可读的文本。不包含文件头或格式信息,具体含义取决于生成它的程序或上下文。常用于存储原始数据(如传感器数据、固件、图像、音频、程序代码等)。
    • 举例:
      image.bin 可能是一张未经压缩的原始图像数据。
      firmware.bin 可能是某个设备的固件文件。
      data.bin 可能是一组传感器采集的原始数值。
  • 注意事项:
    由于 .bin 文件本身没有标准格式,你必须知道它的来源和结构(比如每个字节代表什么)才能正确解析。

2.🎨 yuv 格式数据

  • YUV 是一种颜色编码系统,常用于视频和图像处理领域。
  • 组成:
    Y(Luma):亮度分量,表示图像的明暗信息。
    U/V(Chroma):色度分量,表示颜色信息。
  • 特点:
    与RGB不同:RGB每个像素都有红绿蓝三个值,而YUV将亮度与色度分离,更适合压缩。
    常用于视频编解码:如MPEG、H.264、摄像头输出等。
    有多种采样格式(如YUV420、YUV422、YUV444),影响数据排列方式和压缩率。
  • 举例:
    一个 1920x1080 的 YUV420 图像,数据大小为:
    复制
    Y = 1920 * 1080 字节
    U = 960 * 540 字节(宽和高都是Y的一半)
    V = 960 * 540 字节
    总大小 ≈ 1920 * 1080 * 1.5 字节
  • 用途:
    摄像头原始输出(如Android Camera2 API的YUV_420_888格式)。
    视频解码器的输出帧。
    图像处理算法(如人脸识别、滤镜)的中间格式。

3.总结

特性bin格式yuv格式
本质通用二进制文件特定的图像/视频颜色编码格式
是否可读不可直接读,需上下文可用专用工具查看(如YUV播放器)
用途存储任意原始数据存储图像/视频的像素数据
是否有标准无统一标准,取决于上下文有明确的YUV标准(如BT.601/709)

二、存储数据方式

1.bin

  • 要理解“bin 是怎么存数据的”,必须先弄清 谁写的、写给谁、每个字节代表什么。
  • 举例10帧视频图像

   (1)前提

图像分辨率每像素字节每帧字节
灰度图640 × 4801 B (uint8)307 200 B
深度图640 × 4802 B (uint16)614 400 B

单帧总大小 = 307 200 + 614 400 = 921 600 B
10 帧总大小 = 921 600 × 10 = 9 216 000 B
(2)文件布局

[0:31]   文件头 32 B
[32:]    帧0灰度 + 帧0深度帧1灰度 + 帧1深度...帧9灰度 + 帧9深度

   (3)文件头结构(32 B)

偏移字段类型
0magicuint320x20240506
4versionuint321
8widthuint32640
12heightuint32480
16frame_countuint3210
20gray_bytesuint32307 200
24depth_bytesuint32614 400
28reserveduint320
  • 通过 32 字节文件头描述元数据,后面 连续拼接 每帧“灰度(uint8)+ 深度(uint16)”裸数据,就能用一个 .bin 文件无损、紧凑地保存 10 帧双图视频。

2.YUV

(1)选型:YUV420 (I420 / YV12)

分辨率来源在 YUV420 中的排布
RGB640×4803×8 bit先转 Y、U、V,再按 I420 顺序存放
  • I420 布局
    Y 平面:640×480 = 307 200 B
    U 平面:320×240 = 76 800 B
    V 平面:320×240 = 76 800 B
    单帧大小 = 460 800 B
    10 帧总大小 = 4 608 000 B

(2) RGB → YUV420 转换公式(BT.601)

Y =  0.299  R + 0.587  G + 0.114  B
U = -0.169  R - 0.331  G + 0.500  B + 128
V =  0.500  R - 0.419  G - 0.081  B + 128

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92297.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92297.shtml

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

相关文章

【网络运维】Linux:SELinux简介和配置

SELinux 介绍 SELinux 概述 文件权限控制了哪些用户或用户组可以访问哪些特定文件,但未限定用户访问文件的方式。 例如:对于文件的写入权限而言, 结构化数据文件是否应当设计为只能使用特定的程序写入,但其他编辑器仍可以打开和修…

GaussDB SQL执行计划详解

1 问题现象SQL执行计划是GaussDB性能分析及调优的核心,它输出三个关键信息:访问路径:扫描表数据的路径。连接顺序:多表连接顺序。连接方式:多表连接方式。2 技术背景GaussDB SQL语句执行计划是数据库为运行SQL语句而执行的操作步骤…

02.【数据结构-C语言】顺序表(线性表概念、顺序表实现:增删查、前向声明、顺序表实现通讯录项目:增删改查、通讯录数据导入及保存到本地文件)

目录 1. 线性表 2. 顺序表概念及分类 2.1 顺序表的概念 2.2 顺序表分类 2.3 动静态顺序表对比 3. 顺序表的实现(附完整版代码) 3.1 顺序表结构体声明 3.2 初始化&销毁 3.3 插入(尾插、头插、指定位置之前插入) 3.4 …

MyBatis核心配置深度解析:从XML到映射的完整技术指南

🔧 MyBatis核心配置深度解析:从XML到映射的完整技术指南 🚀 引言:MyBatis作为Java生态中最受欢迎的持久层框架之一,其强大的配置体系是实现灵活数据访问的核心。本文将深入解析MyBatis的配置文件架构、映射机制以及高级…

OpenCV HSV与RGB颜色模型的区别

HSV与RGB颜色模型的区别 HSV(Hue, Saturation, Value)和 RGB(Red, Green, Blue)是两种不同的颜色表示方式,主要区别如下:对比项RGBHSV定义基于红、绿、蓝三原色的混合基于色相(H)、饱…

具有柔性关节的机械臂matlab仿真

柔性关节机械臂MATLAB仿真方案,包含动力学建模、控制器设计和可视化分析。该方案基于拉格朗日方程建立柔性关节模型,并实现了PD控制、滑模控制和自适应控制三种控制策略。 MATLAB仿真 %% 柔性关节机械臂仿真 - 完整系统 % 作者: MATLAB技术助手 % 日期: …

数据结构—队列和栈

1.二级指针的使用二级指针: 1. 在被调函数中,想要修改主调函数中的指针变量,需要传递该指针变量的地址,形参用二级指针接收。 2.指针数组的数组名是一个二级指针,指针数组的数组名作为参数传递时,可用二级指…

均线:从市场脉搏到量子计算的时空密码

一部跨越百年的技术分析进化史,揭示金融市场的数学本质 引言:金融市场的永恒罗盘 在华尔街百年风云中,一个简单的数学工具始终闪耀着智慧光芒——移动平均线(Moving Average)。从杰西利弗莫尔的手绘图表到文艺复兴科技的量子模型,均线系统完成了从经验工具到科学框架的惊…

Python 通过Playwright+OpenCV破解滑动验证码 实例

由于公司最近需要对接某业务系统,涉及到部分数据需要提交至其它平台业务系统,只有其它平台账户,没有接口,因此做此开发。首先通过OpenCV计算出验证验证码滑块距离,根据距离,使用 Playwright 利用滑动距离模…

山东省天地图API申请并加载到QGIS和ArcGIS Pro中

目的:在QGIS/ArcGIS Pro中加载山东省不同时期的历史影像1、申请API 山东省天地图的API和国家天地图的API不通用,需要单独申请。 https://shandong.tianditu.gov.cn/ 打开本地服务资源找到影像的详情页 点击申请地址按照下面的步骤一步一步来,…

qt窗口--02

文章目录qt窗口--02QMessageBoxQColorDialogQFileDialogQFontDialogQInputDialog、结语很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!! 作者:٩( ‘ω’ )و260 我的专栏:qt&#…

Linux seLinux

Linux seLinux 1、什么是selinux,security enhanced linux–安全加强的linux。 是由美国国家安全局开发的以及历史。selinux之前是基于自主存取控制方法DAC, 只要符合权限即可,通过suid和sgid特殊权限存在有一定的安全隐患, 甚至一…

Linux: NFS 服务部署与autofs自动挂载的配置

Linux: NFS 服务部署与autofs自动挂载的配置NFS(Network File System,网络文件系统)是一种基于 TCP/IP 协议的网络文件共享协议,允许不同主机在网络中共享文件资源,实现跨主机的文件访问与管理,…

【深度学习②】| DNN篇

0 序言 本文将系统介绍基于PyTorch的深度神经网络(DNN)相关知识,包括张量的基础操作、DNN的工作原理、实现流程,以及批量梯度下降、小批量梯度下降方法和手写数字识别案例。通过学习,你将掌握DNN的核心概念、PyTorch实…

Xcode 26 如何在创建的 App 包中添加特定的目录

功能需求 在某些情况下,我们需要将特定文件放在 Xcode 编译链接后 App 包里的指定目录中,比如将 AI 大模型相关文件放在它们对应名称的目录中: 正常情况下,Xcode 会将项目目录中的所有文件都平铺放到 App 包的根目录里。那么,要如何形成上面这种文件目录层级呢? 在本篇…

linux-系统性能监控

linux-系统性能监控一、cpu1.1 查看cpu的信息1.2 cpu性能指标1.3 编写监控cpu使用率的脚本1.4 查找出使用cpu最高的10个进程二、内存2.1 查看内存信息2.2 交换(swap)分区2.2.1 查看交换分区的积极程度2.2.2 查看交换分区的大小2.2.3 管理交换分区2.3 编写…

AgxOrin平台JetPack5.x版本fix multi-cam race condition 补丁

本文包含三个针对NVIDIA Linux驱动程序的补丁修复: 多摄像头竞争条件修复 在capture-ivc驱动中新增信号量机制,解决多摄像头同时操作时的竞争条件问题(Bug 4425972)。主要修改包括在通道上下文结构中添加信号量,并在通道ID通知和取消注册时进行信号量操作。 内存泄漏修复…

【Go】P3 Go语言程序结构

Go语言程序结构Go语言程序结构命名规则与编程惯例核心规则四种声明语句详解var声明:变量声明const声明:常量声明type声明:类型定义func声明:函数声明简短变量声明(:)使用规则和限制指针:安全的内存地址操作基本概念和操…

【机器学习深度学习】知识蒸馏实战:让小模型拥有大模型的智慧

目录 引言:模型压缩的迫切需求 一、知识蒸馏的核心原理 1.1 教师-学生模式 1.2 软目标:知识传递的关键 1.3 蒸馏损失函数 二、实战:Qwen模型蒸馏实现 2.1 环境配置与模型加载 2.2 蒸馏损失函数实现 2.3 蒸馏训练流程 2.4 训练优化技…

基于MCP提示构建工作流程自动化的实践指南

引言 在现代工作和生活中,我们经常被各种重复性任务所困扰——从每周的膳食计划到代码审查反馈,从文档更新到报告生成。这些任务虽然不复杂,却消耗了大量宝贵时间。MCP(Model Context Protocol)提示技术为解决这一问题…