news 2026/5/16 19:30:14

解决香橙派没有适配ov13855的3A算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决香橙派没有适配ov13855的3A算法

OrangePi 5 开发板补齐 OV13855 JSON 和 3A 算法全过程笔记

先放上前后对比图片

3A算法启动前

3A算法启动后


之前偏绿是因为缺少 RKAIQ/3A 和正确 IQ 文件,启动 3A 后,颜色、曝光、白平衡明显改善。


相机实现自动白平衡,自动曝光等功能,最重要的是ov13855_CMK-OT2016-FV1_default.json文件和
rkaiq_3A_server程序.

这两个文件都属于瑞芯微 (Rockchip)平台的摄像头处理框架RKAIQ (Rockchip AIQ)。它们共同负责摄像头的图像信号处理(ISP)和 3A 算法(自动曝光、自动白平衡、自动对焦)的运行。

1.ov13855_CMK-OT2016-FV1_default.json

这是一个摄像头效果配置文件(通常被称为IQ 文件Tuning 文件)。

  • 文件名解析
    • ov13855:代表摄像头的传感器型号(OmniVision 13855,一款1300万像素的传感器)。
    • CMK-OT2016-FV1:代表摄像头模组的厂家和型号,以及搭配的镜头信息。
    • .json:文件格式,内部存储了大量的配置参数。
  • 主要作用
    • 参数库:它存储了针对该特定摄像头硬件(感光芯片 + 镜头)调试出的最优参数。
    • 3A 初始化:包含 AE(自动曝光)的亮度目标、AWB(自动白平衡)的色温曲线、AF(自动对焦)的搜索步长等。
    • 图像增强:包含降噪(NR)、锐化、去畸变(LSC)、色彩校正(CCM)等 ISP 模块的配置参数。
    • 适配性:如果没有这个文件或者文件不匹配,摄像头虽然可能出图,但会出现画面偏色、亮度异常、对焦模糊等问题。

2.rkaiq_3A_server

这是一个用户态服务程序(Daemon/Server),是整个摄像头引擎的核心运行实体。

  • 主要作用
    • 算法引擎:它负责运行 3A 算法逻辑。它从内核(ISP 驱动)获取统计数据(如画面亮度、色彩分布),计算出下一步的曝光时间、增益和白平衡参数。
    • 加载配置:在启动时,它会去扫描系统目录(通常是/etc/iqfiles/),根据当前接入的摄像头型号加载上述的.json配置文件。
    • 硬件通信:它充当了上层应用(如拍照 App)与底层硬件驱动之间的桥梁。它通过 V4L2 接口将计算好的参数下发给 ISP 硬件控制器。
    • 实时调试:它通常还支持调试功能,可以配合 PC 端的瑞芯微调试工具(RKISP Tuner)实时修改图像效果。

两者的关系

简单来说:

  • ov13855...json是“乐谱”:记录了声音(图像)应该如何表现。
  • rkaiq_3A_server是“演奏者”:他读取乐谱,并根据实际情况(环境光线变化)实时调整演奏方式,最终产生清晰、准确的视频画面。

常见应用场景:
如果你在开发基于 RK3568、RK3588 等芯片的嵌入式设备,当你更换了不同型号的摄像头模组时,就需要将对应的.json文件放到指定位置,并确保rkaiq_3A_server正常运行,否则摄像头将无法达到最佳显示效果。


0. 问题背景

开发板使用 OV13855 摄像头,设备树中已经有:

ov13855@36 { compatible = "ovti,ov13855"; status = "okay"; };

但板子中最初只有:

/etc/iqfiles/ov13850_CMK-CT0116_default.json

缺少 OV13855 对应 IQ 文件:

ov13855_CMK-OT2016-FV1_default.json

同时板子中最初也没有:

rkaiq_3A_server

所以问题不是单纯缺 JSON,而是:

缺 OV13855 IQ 文件 + 缺 RKAIQ/3A 用户态程序

一、确认运行时设备树中确实有 OV13855

1. 导出运行时设备树

一开始在/boot/dtb/rockchip/overlay目录执行:

sudodtc-Ifs-Odts /proc/device-tree>running.dts

报错:

bash: running.dts: Permission denied

报错原因

sudo只作用于dtc,但>重定向是普通用户执行的;并且当前目录/boot/dtb/rockchip/overlay普通用户无写权限。

解决方式

切换到用户目录导出:

cd~sudodtc-Ifs-Odts /proc/device-tree>running.dts

然后查 OV13855:

grep-n"ov13855"running.dts

查模组名和镜头名:

grep-n"camera-module-name\|camera-module-lens-name"running.dts

确认设备树中有:

compatible = "ovti,ov13855"; rockchip,camera-module-name = "CMK-OT2016-FV1"; rockchip,camera-module-lens-name = "default";

因此 IQ 文件名应为:

ov13855_CMK-OT2016-FV1_default.json

二、确认 OV13855 是通过 overlay 启用的

这个部分我单独写了一篇笔记记录:

查看启动配置:

cat/boot/orangepiEnv.txt

orangepiEnv.txt里面的内容是我通过orangepi-config修改的

输出中有:

fdtfile=rockchip/rk3588s-orangepi-5.dtb overlays=i2c3-m0 lcd2 ov13855-c3 pwm15-m2

说明当前系统启动时加载了:

rk3588-ov13855-c3.dtbo

所以运行时设备树是:

基础 DTB + i2c3-m0 overlay + lcd2 overlay + ov13855-c3 overlay + pwm15-m2 overlay = /proc/device-tree 中的最终运行时设备树

三、从.img镜像中查找 OV13855 JSON

原因:我ubuntu里面下载的SDK版本里面没有OV13855 JSON

思路:找一个发布时间比较近的ubuntu镜像,在.img文件中尝试提取OV13855 JSON(不一定有)

1. 绑定镜像

虚拟机中执行:

IMG="Orangepi5_1.2.2_ubuntu_jammy_desktop_gnome_linux5.10.160.img"sudolosetup-Pf--show"$IMG"

输出:

/dev/loop1

查看分区:

lsblk /dev/loop1

你的镜像只有一个分区:

/dev/loop1p1

2. 挂载镜像

sudomkdir-p/mnt/opirootsudomount-oro /dev/loop1p1 /mnt/opiroot

3. 查找 JSON

精确查找:

sudofind/mnt/opiroot-iname"ov13855_CMK-OT2016-FV1_default.json"

扩大查找:

sudofind/mnt/opiroot-iname"*ov13855*.json"

查所有 IQ 文件:

sudofind/mnt/opiroot-path"*iqfiles*"-typef-iname"*.json"

后来你在 SDK 中找到了:

ov13855_CMK-OT2016-FV1_default.json

四、把 OV13855 JSON 拷到开发板

在开发板上确认/etc/iqfiles存在:

ls/etc/iqfiles

然后复制 JSON:

sudomkdir-p/etc/iqfilessudocpov13855_CMK-OT2016-FV1_default.json /etc/iqfiles/sudochmod644/etc/iqfiles/ov13855_CMK-OT2016-FV1_default.jsonsync

验证:

ls-lh/etc/iqfiles/ov13855_CMK-OT2016-FV1_default.json

你后来的输出是:

-rw-r--r-- 1 root root 346K May 15 09:34 /etc/iqfiles/ov13855_CMK-OT2016-FV1_default.json

说明 JSON 已经放好。


五、检查开发板是否有 3A 程序

在开发板上查:

sudofind/-name"rkaiq_3A_server"2>/dev/null

没有结果。

继续查:

sudofind/-iname"*rkaiq*"2>/dev/nullsudofind/-iname"*aiq*"2>/dev/nullsudofind/-iname"*3a*"2>/dev/null

也没有有效的 RKAIQ/3A 程序。

再查 RKISP:

sudofind/-iname"*rkisp*"2>/dev/null

结果能看到:

/usr/lib/librkisp.so /sys/devices/platform/fdcc0000.rkisp /sys/devices/platform/fdcb0000.rkisp /sys/module/video_rkisp /dev/v4l/by-path/platform-rkisp1-vir0-video-index*

进程检查:

ps-ef|grep-Ei"rkaiq|aiq|3a|rkisp"

只有grep本身。

开发板上没有找到rkaiq_3A_serve

分析

这说明:

RKISP 内核驱动存在 但 RKAIQ/3A 用户态程序不存在

所以只放 JSON 不够,必须补上:

rkaiq_3A_server librkaiq.so

你上传的搜索结果也显示,板端未找到rkaiq_3A_serverrkaiqaiq,但存在 rkisp 相关内核设备和节点。


六、从.img镜像中提取 rkaiq_3A_server

虚拟机中执行:

sudofind/mnt/opiroot-name"rkaiq_3A_server"

找到:

/mnt/opiroot/usr/bin/rkaiq_3A_server

确认架构:

file/mnt/opiroot/usr/bin/rkaiq_3A_server

输出:

ELF 64-bit LSB pie executable, ARM aarch64

说明它可以在 OrangePi 5 上运行。

查看依赖:

readelf-d/mnt/opiroot/usr/bin/rkaiq_3A_server|grepNEEDED

输出包含:

Shared library: [librkaiq.so] Shared library: [libpthread.so.0] Shared library: [libdl.so.2] Shared library: [libstdc++.so.6] Shared library: [libm.so.6] Shared library: [libgcc_s.so.1] Shared library: [libc.so.6] Shared library: [ld-linux-aarch64.so.1]

在开发板上查找依赖

重点缺的是:

librkaiq.so

七、复制 3A 程序到开发板

虚拟机执行:

scp/mnt/opiroot/usr/bin/rkaiq_3A_server orangepi@开发板IP:/home/orangepi/


开发板执行:

sudocp~/rkaiq_3A_server /usr/bin/sudochmod+x /usr/bin/rkaiq_3A_server

八、解决 librkaiq.so 缺失问题

1. 开发板检查依赖

ldd /usr/bin/rkaiq_3A_server

最初报错:

librkaiq.so => not found

报错原因

rkaiq_3A_server是动态链接程序,运行时需要librkaiq.so,但开发板系统中没有这个库。

2. 在镜像中查找库

虚拟机执行:

sudofind/mnt/opiroot-name"librkaiq.so*"

找到后复制到开发板:

scp/mnt/opiroot/实际路径/librkaiq.so* orangepi@开发板IP:/home/orangepi/

3. 开发板安装库

sudocp~/librkaiq.so* /lib/aarch64-linux-gnu/sudochmod644/lib/aarch64-linux-gnu/librkaiq.so*sudoldconfig

再次检查:

ldd /usr/bin/rkaiq_3A_server

后来的输出变为:

librkaiq.so => /lib/aarch64-linux-gnu/librkaiq.so

说明依赖已经解决。


九、启动 rkaiq_3A_server 时遇到参数错误

你执行:

sudo/usr/bin/rkaiq_3A_server-a/etc/iqfiles

报错:

/usr/bin/rkaiq_3A_server: invalid option -- 'a' ERR: Usage: /usr/bin/rkaiq_3A_server to start 3A engine --silent, optional, subpress debug log


命令行前面是一个蓝色实心的圆说明指令执行成功;如果是一个红色空心圆,里面是红×说明执行失败.

报错原因

这个版本的rkaiq_3A_server不支持:

-a/etc/iqfiles

它只支持直接启动,或者加:

--silent

它大概率默认从固定路径读取 IQ 文件,例如:

/etc/iqfiles/

十、正确启动 3A 程序

前台启动

sudo/usr/bin/rkaiq_3A_server

如果程序不退出,说明正在运行。

后台启动

sudo/usr/bin/rkaiq_3A_server&

静默后台启动

sudo/usr/bin/rkaiq_3A_server--silent&

带日志启动,推荐排错用

sudosh-c'/usr/bin/rkaiq_3A_server > /tmp/rkaiq.log 2>&1 &'

查看日志:

cat/tmp/rkaiq.log

检查进程:

ps-ef|grep-irkaiq

如果看到:

/usr/bin/rkaiq_3A_server


说明 3A 服务已经运行。


十一、最终验证 ISP / 3A 是否生效

1. 检查 OV13855 IQ 文件

ls-lh/etc/iqfiles/ov13855_CMK-OT2016-FV1_default.json

2. 检查 3A 进程

ps-ef|grep-irkaiq

3. 检查 media 链路

media-ctl-p|grep-iE"ov13855|rkisp|rkcif|mipi|csi"

4. 检查日志

dmesg|grep-Ei"ov13855|rkisp|rkcif|mipi|csi|rkaiq|iq"

5. 测试采集画面

gst-launch-1.0 v4l2srcdevice=/dev/video11!video/x-raw,format=NV12,width=1280,height=720!videoconvert!autovideosink

使用3A算法后

使用3A算法前


之前偏绿是因为缺少 RKAIQ/3A 和正确 IQ 文件,启动 3A 后,颜色、曝光、白平衡明显改善。


十二、当前最终状态总结

已经完成:

1. 确认运行时设备树中有 OV13855 2. 确认模组名是 CMK-OT2016-FV1 3. 找到对应 IQ 文件 ov13855_CMK-OT2016-FV1_default.json 4. 拷贝 IQ 文件到 /etc/iqfiles/ 5. 从 .img 中提取 rkaiq_3A_server 6. 从 .img 中提取并安装 librkaiq.so 7. 解决 ldd 中 librkaiq.so not found 问题 8. 明确当前 rkaiq_3A_server 不支持 -a 参数

现在正确启动命令是:

sudo/usr/bin/rkaiq_3A_server--silent&

然后验证:

ps-ef|grep-irkaiq gst-launch-1.0 v4l2srcdevice=/dev/video11!video/x-raw,format=NV12,width=1280,height=720!videoconvert!autovideosink

核心结论:

OV13855 设备树有了,IQ JSON 有了,3A 程序和依赖库也补齐了。 接下来只需要用正确方式启动 rkaiq_3A_server,并验证画面效果。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 19:30:13

终极解决方案:让macOS Finder原生支持所有视频格式预览

终极解决方案:让macOS Finder原生支持所有视频格式预览 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitco…

作者头像 李华
网站建设 2026/5/16 19:23:18

Kubernetes自动化运维最佳实践

Kubernetes自动化运维最佳实践 引言 自动化运维是云原生环境中的重要能力,它可以提高运维效率、减少人为错误、确保系统稳定性。本文将深入探讨Kubernetes中的自动化运维策略和最佳实践。 一、自动化运维架构 1.1 自动化运维层次 ┌────────────────…

作者头像 李华
网站建设 2026/5/16 19:23:18

ESP32+LVGL8.3保姆级教程:搞定ST7789V屏幕和CST816T触摸(附完整代码)

ESP32LVGL8.3实战指南:ST7789V屏幕与CST816T触摸的深度适配 当一块240x280分辨率的ST7789V屏幕与CST816T触摸芯片组合遇到ESP32开发板,如何让LVGL8.3图形库完美驱动这套硬件?本文将带你从零开始,穿越配置迷宫,解决色彩…

作者头像 李华
网站建设 2026/5/16 19:22:25

dashscope 介绍及使用(调用阿里云 AI 大模型的核心工具)

dashscope 就是阿里云百炼大模型的 Python 工具包 让你的 Python 代码能直 接调用 通义千问、DeepSeek 等 AI 大模型 pip install dashscope -i https://pypi.tuna.tsinghua.edu.cn/simple 基本设置 import dashscope from dashscope.api_entities.dashscope_response import R…

作者头像 李华
网站建设 2026/5/16 19:22:12

C# Dev Tunnels使用方法 C# Visual Studio如何公开本地Web API进行调试.txt

模型持久化(如使用 joblib 保存 decisiontreeclassifier)本身不改变模型性能;所谓“准确率从57%升至92%”实为评估方式错误——用训练数据直接测试导致严重过拟合性虚高,本质是数据泄露而非模型优化。 模型持久化&#xff08…

作者头像 李华
网站建设 2026/5/16 19:19:33

深圳日本乐天物流哪家本地推荐

近年日本乐天(Rakuten)电商平台对中国卖家开放力度加大,不少深圳本地卖家开始布局日本市场。物流作为跨境链条中的关键环节,直接影响到店铺的库存周转、客户评价和退货率。那么,在深圳本地,哪家物流服务商更…

作者头像 李华