当前位置: 首页 > news >正文

rk平台怎么抓取raw图并在Ubuntu下显示

1、用v4l2抓取raw数据

# # 查看当前格式 # v4l2-ctl -d /dev/video11 --get-fmt-video Format Video Capture Multiplanar: Width/Height : 2880/1616 Pixel Format : 'BG10' (10-bit Bayer BGBG/GRGR) Field : None Number of planes : 1 Flags : 000000bc Colorspace : Default Transfer Function : Unknown (000000a9) YCbCr/HSV Encoding: Unknown (000000da) Quantization : Default Plane 0 : Bytes per Line : 3840 Size Image : 6205440 #
# # 查看支持的所有格式 # v4l2-ctl -d /dev/video11 --list-formats ioctl: VIDIOC_ENUM_FMT Type: Video Capture Multiplanar ​ [0]: 'RG10' (10-bit Bayer RGRG/GBGB) [1]: 'BA10' (10-bit Bayer GRGR/BGBG) [2]: 'GB10' (10-bit Bayer GBGB/RGRG) [3]: 'BG10' (10-bit Bayer BGBG/GRGR) [4]: 'Y10 ' (10-bit Greyscale) #
# 确保格式正确(当前已是BG10) # v4l2-ctl -d /dev/video11 --set-fmt-video=width=2880,height=1616,pixelformat=BG10

抓取raw图

v4l2-ctl -d /dev/video11 --stream-mmap --stream-count=1 --stream-to=/tmp/raw_BG10_2880x1616.raw

2.将10bit raw图转换为16bit的

python3 << 'EOF' import struct ​ def unpack_10bit(data): out = [] for i in range(0, len(data), 5): if i + 5 <= len(data): val = data[i] | (data[i+1] << 8) | (data[i+2] << 16) | (data[i+3] << 24) | (data[i+4] << 32) for j in range(4): pixel = (val >> (10*j)) & 0x3FF # 扩展到 16-bit: 左移6位 out.append(pixel << 6) return out ​ def remove_padding(data, width, height, bpp=10, stride_padding=240): bytes_per_row = width * bpp // 8 total_row_bytes = bytes_per_row + stride_padding cleaned = bytearray() for row in range(height): start = row * total_row_bytes end = start + bytes_per_row cleaned.extend(data[start:end]) return bytes(cleaned) ​ print("读取文件...") with open('./sensor2_frame.raw', 'rb') as f: data = f.read() print(f"原始大小: {len(data)} 字节") ​ print("去除填充...") cleaned = remove_padding(data, 2880, 1616, bpp=10, stride_padding=240) print(f"去除填充后: {len(cleaned)} 字节") ​ print("解包并扩展到16-bit...") pixels = unpack_10bit(cleaned) print(f"像素总数: {len(pixels)}") print(f"值范围: {min(pixels)} - {max(pixels)}") ​ print("保存...") with open('./sensor2_frame_16bit_full.raw', 'wb') as f: for p in pixels: f.write(struct.pack('<H', p)) ​ print("转换完成! 输出: sensor2_frame_16bit_full.raw") EOF

3.安装rawtherapee

sudo apt install rawtherapee

4.转换为rawtherapee可以显示的文件

convert -size 2880x1616 -depth 16 gray:./sensor2_frame_16bit_full.raw output_16bit.tiff

5. rawtherapee工具显示raw图

rawtherapee output_16bit.tiff

如果太暗,可以调大曝光补偿为1.84试下

http://www.jsqmd.com/news/1309744/

相关文章:

  • Python深度学习在糖尿病视网膜病变自动诊断中的应用
  • 5分钟掌握Windows右键菜单革命:Nilesoft Shell完全指南
  • 2026 年 8 月北京老房改造装修公司测评榜单|6 家专业靠谱商家推荐 - 好物分享知识传播
  • ITIL4服务目录管理:从技术到业务的转型实践
  • SSA-BPNN混合算法在复杂环境定位中的优化应用
  • 终极免费解锁Wand专业版:5分钟永久移除2小时限制的完整指南
  • 基于Flask+Vue的农产品扶贫系统开发实践
  • AI 时代如何为“数字员工”划清身份边界?
  • AI引用优化:提升技术问答页面被大模型引用的策略
  • 深度解析DLX:自托管翻译API服务的实战指南与架构揭秘
  • 3DS启动环境升级终极指南:从A9LH到B9S的完整迁移方案
  • 5个关键策略:如何将GitHub Trending skills项目的AI技能执行效率提升300%
  • macos-wallpaper多屏幕管理:轻松设置不同显示器壁纸
  • 基于Matlab的水果检测算法实现与优化
  • SpringBoot网吧管理系统开发实战与架构设计
  • 2026 年北京靠谱装修公司怎么选|专业家装服务商对比与选购指南 - 好物分享知识传播
  • CSP202605A 银行家舍入
  • Minecraft 1.21 MASA模组全家桶汉化包:终极中文体验指南
  • CC Switch:一站式AI编程工具管理平台,彻底告别繁琐配置
  • 如何快速搭建智能交易系统:Chanlun-pro缠论量化工具的完整指南
  • AbMole动物建模攻略丨详解LPS(脂多糖)诱导构建啮齿动物脓毒症模型
  • 如何优化RAG系统的服务的推理性能
  • 终极暗黑破坏神2存档编辑器:快速打造完美角色的完整指南
  • LiDAR-IMU时空标定:15秒实现毫米级传感器融合初始化的实战指南 [特殊字符]
  • G-Helper:华硕笔记本轻量化控制工具的完整使用指南
  • 【计算机毕业设计单片机案例】基于 STM32 双模式自主行驶小车软硬件方案设计 嵌入式多传感数据采集智能小车综合测控系统(017401)
  • 3步掌握ComfyUI-LTXVideo:开启专业级AI视频创作新时代
  • Matlab计算机视觉实战:水果检测算法开发与应用
  • C Interfaces and Implementations实战:10个经典示例带你掌握接口设计
  • 轻量化鞋材微球国产替代