RDK x5 在关闭gdc矫正后无法使用自定义标定文件

由于我的相机不支持gdc硬件矫正,想使用自定义标定文件,按照文档 关闭gdc_enable ,将calib_method设置为custom,并设置标定文件路径,结果报错程序无法运行sunrise@ubuntu:~/lings_ws/src$ bash run_stereo.sh
/home/sunrise/lings_ws/install/mipi_cam
/home/sunrise/lings_ws/install/hobot_stereonet
[INFO] [launch]: All log files can be found below /home/sunrise/.ros/log/2000-01-01-08-33-46-766812-ubuntu-24495
[INFO] [launch]: Default logging verbosity is set to INFO
config_file_path is /home/sunrise/lings_ws/install/mipi_cam/lib/mipi_cam/config/
Hobot shm pkg enables zero-copy with fastrtps profiles file: /opt/tros/humble/lib/hobot_shm/config/shm_fastdds.xml
Hobot shm pkg sets RMW_FASTRTPS_USE_QOS_FROM_XML: 1
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
webserver has launch
config_file_path is /home/sunrise/lings_ws/install/mipi_cam/lib/mipi_cam/config/
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
webserver has launch
config_file_path is /home/sunrise/lings_ws/install/mipi_cam/lib/mipi_cam/config/
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
env of RMW_FASTRTPS_USE_QOS_FROM_XML is 1 , ignore env setting
webserver has launch
[INFO] [stereonet_model_node-1]: process started with pid [24513]
[INFO] [mipi_cam-2]: process started with pid [24515]
[INFO] [hobot_codec_republish-3]: process started with pid [24517]
[INFO] [websocket-4]: process started with pid [24519]
[hobot_codec_republish-3] [WARN] [0946686827.576449633] [hobot_codec_encoder_16914043]: Parameters:
[hobot_codec_republish-3] sub_topic: /StereoNetNode/stereonet_visual
[hobot_codec_republish-3] pub_topic: /image_jpeg
[hobot_codec_republish-3] channel: 1
[hobot_codec_republish-3] in_mode: ros
[hobot_codec_republish-3] out_mode: ros
[hobot_codec_republish-3] in_format: bgr8
[hobot_codec_republish-3] out_format: jpeg
[hobot_codec_republish-3] jpg_quality: 60.00
[hobot_codec_republish-3] input_framerate: 30
[hobot_codec_republish-3] output_framerate: -1
[hobot_codec_republish-3] dump_output: false
[hobot_codec_republish-3] dump_file_prefix: ./dump_codec_output
[hobot_codec_republish-3] dump_frame_count: -1 (unlimited)
[hobot_codec_republish-3] [WARN] [0946686827.583408808] [HobotCodecImpl]: platform x5
[mipi_cam-2] [WARN] [0946686827.895491004] [mipi_node]:
[mipi_cam-2] node params:
[mipi_cam-2] config_path: /home/sunrise/lings_ws/install/mipi_cam/lib/mipi_cam/config/
[mipi_cam-2] video_device_name: imx219-30fps
[mipi_cam-2] channel: 2
[mipi_cam-2] channel2: 0
[mipi_cam-2] camera_info_url:
[mipi_cam-2] camera_calibration_file_path: /home/sunrise/lings_ws/install/mipi_cam/lib/mipi_cam/config/imx219_640x352_G.yaml
[mipi_cam-2] out_format_name: nv12
[mipi_cam-2] gdc_bin_file:
[mipi_cam-2] image_width: 640
[mipi_cam-2] image_height: 352
[mipi_cam-2] sub_image_width: 640
[mipi_cam-2] sub_image_height: 352
[mipi_cam-2] framerate: 30
[mipi_cam-2] rotation: 0.000000
[mipi_cam-2] device_mode: dual
[mipi_cam-2] dual_combine: 1
[mipi_cam-2] lpwm_enable: false
[mipi_cam-2] gdc_enable: false
[mipi_cam-2] frame_ts_type: realtime
[mipi_cam-2] frame_id: camera_link
[mipi_cam-2] link_type: 0
[mipi_cam-2] link_port: 0
[mipi_cam-2] gsml_cfg_file:
[mipi_cam-2] io_method_name: ros
[mipi_cam-2] cal_alpha: 0.000
[mipi_cam-2] sync_awb: 0
[mipi_cam-2] sync_ae: 0
[mipi_cam-2] print_ips_log: 0
[websocket-4] [WARN] [0946686827.945844104] [websocket]:
[websocket-4] Parameter:
[websocket-4] image_topic: /image_jpeg
[websocket-4] image_type: mjpeg
[websocket-4] only_show_image: 1
[websocket-4] output_fps: 0
[stereonet_model_node-1] [WARN] [0946686828.246522537] [StereoNetNode]: => ===================== init StereoNetNode =====================
[stereonet_model_node-1]
[stereonet_model_node-1] [WARN] [0946686828.250438292] [StereoNetNode]: => -------- init StereoRectify------------------
[ERROR] [stereonet_model_node-1]: process has died [pid 24513, exit code -11, cmd ‘/home/sunrise/lings_ws/install/hobot_stereonet/lib/hobot_stereonet/stereonet_model_node --ros-args --log-level info --ros-args -r __node:=StereoNetNode --params-file /tmp/launch_params_yh50cst6’].
[mipi_cam-2] [WARN] [0946686829.164440604] [mipi_cam]: dual mode force sensor config: imx219-30fps
[mipi_cam-2] [WARN] [0946686830.834022378] [mipi_cam]: [init]->cap imx219-30fps init success.
[mipi_cam-2]
[mipi_cam-2] index: 0 sensor_name: sc230ai-30fps config_file:linear_1920x1080_raw10_30fps_1lane.c
[mipi_cam-2] index: 1 sensor_name: sc132gs-1280p config_file:linear_1088x1280_raw10_30fps_1lane.c
[mipi_cam-2] index: 2 sensor_name: ov5647 config_file:linear_1920x1080_raw10_30fps_2lane.c
[mipi_cam-2] index: 3 sensor_name: imx219-30fps config_file:linear_1920x1080_raw10_30fps_2lane.c
[mipi_cam-2] index: 4 sensor_name: imx219-1632x1232-30fps config_file:linear_1632x1232_raw10_30fps_2lane.c
[mipi_cam-2] index: 5 sensor_name: imx477-1920x1080-50fps config_file:linear_1920x1080_raw12_50fps_2lane.c
[mipi_cam-2] index: 6 sensor_name: imx415-20fps-2lane config_file:linear_3840x2160_raw10_30fps_2lane.c
[mipi_cam-2] Searching camera sensor on device: /proc/device-tree/soc/cam/vcon@0 i2c bus: 6 mipi rx phy: 0
[mipi_cam-2] WARN: Sensor Name: sc230ai-30fps, Expected Chip ID: 0xCB34, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: sc230ai-30fps, Expected Chip ID: 0xCB34, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: sc132gs-1280p, Expected Chip ID: 0x132, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: sc132gs-1280p, Expected Chip ID: 0x132, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: sc132gs-1280p, Expected Chip ID: 0x132, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: ov5647, Expected Chip ID: 0x5647, Actual Chip ID Read: 0x00
[mipi_cam-2] INFO: vp_sensor_detect_2 Support sensor index:0, sensor_name:imx219-30fps on mipi rx csi 0, i2c addr 0x10, config_file:linear_1920x1080_raw10_30fps_2lane.c
[mipi_cam-2] Searching camera sensor on device: /proc/device-tree/soc/cam/vcon@2 i2c bus: 4 mipi rx phy: 2
[mipi_cam-2] WARN: Sensor Name: sc230ai-30fps, Expected Chip ID: 0xCB34, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: sc230ai-30fps, Expected Chip ID: 0xCB34, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: sc132gs-1280p, Expected Chip ID: 0x132, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: sc132gs-1280p, Expected Chip ID: 0x132, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: sc132gs-1280p, Expected Chip ID: 0x132, Actual Chip ID Read: 0x00
[mipi_cam-2] WARN: Sensor Name: ov5647, Expected Chip ID: 0x5647, Actual Chip ID Read: 0x00
[mipi_cam-2] INFO: vp_sensor_detect_2 Support sensor index:2, sensor_name:imx219-30fps on mipi rx csi 2, i2c addr 0x10, config_file:linear_1920x1080_raw10_30fps_2lane.c
[mipi_cam-2] Searching camera sensor on device: /proc/device-tree/soc/cam/vcon@0 i2c bus: 6 mipi rx phy: 0
[mipi_cam-2] INFO: vp_sensor_fixed_mipi_host_1 Found sensor_name:imx219-30fps on mipi rx csi 0, i2c addr 0x10, config_file:linear_1920x1080_raw10_30fps_2lane.c
[mipi_cam-2] Searching camera sensor on device: /proc/device-tree/soc/cam/vcon@2 i2c bus: 4 mipi rx phy: 2
[mipi_cam-2] INFO: vp_sensor_fixed_mipi_host_1 Found sensor_name:imx219-30fps on mipi rx csi 2, i2c addr 0x10, config_file:linear_1920x1080_raw10_30fps_2lane.c
[mipi_cam-2]
[mipi_cam-2] === Detected IIO Devices ===
[mipi_cam-2] Device: iio:device0 | Name: 34190000.adc
[mipi_cam-2] ============================
[mipi_cam-2]
[mipi_cam-2]
[hobot_codec_republish-3] [ERROR] [0946686832.583990038] [hobot_codec_encoder_16914043]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [0946686832.967428900] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[hobot_codec_republish-3] [ERROR] [0946686837.583909933] [hobot_codec_encoder_16914043]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [0946686837.967501963] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[hobot_codec_republish-3] [ERROR] [0946686842.583929204] [hobot_codec_encoder_16914043]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [0946686842.967435525] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[hobot_codec_republish-3] [ERROR] [0946686847.583904308] [hobot_codec_encoder_16914043]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [0946686847.967516296] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[hobot_codec_republish-3] [ERROR] [0946686852.583936120] [hobot_codec_encoder_16914043]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [0946686852.967538983] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[hobot_codec_republish-3] [ERROR] [0946686857.583952808] [hobot_codec_encoder_16914043]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [0946686857.967554087] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[hobot_codec_republish-3] [ERROR] [0946686862.583970787] [hobot_codec_encoder_16914043]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publisher still exists by ‘ros2 topic info /StereoNetNode/stereonet_visual’!
[websocket-4] [ERROR] [0946686862.967555066] [websocket]: Websocket did not receive image data! Please check whether the image publisher still exists by ‘ros2 topic info /image_jpeg’!
[hobot_codec_republish-3] [ERROR] [0946686867.583847765] [hobot_codec_encoder_16914043]: Hobot_Codec has not received image for more than 5 seconds! Please check whether the image publishe

看日志,mipi_cam 已经起来了,挂掉的是 stereonet_model_node,退出码 -11,崩在 init StereoRectify。优先怀疑 自定义标定文件不是 StereoNet 需要的双目矫正参数,或者参数没有传给 StereoNetNode,导致初始化时段错误。

建议按这个顺序排查:

  1. 先用默认/官方标定配置跑一次,确认不是相机链路问题。
    如果默认配置能跑,问题基本就在自定义标定文件或参数位置。

  2. 确认 calib_method=custom 和标定文件路径是配给 hobot_stereonet 的,不只是 mipi_cam

cd ~/lings_ws
grep -R "calib_method\|camera_calibration_file_path" \
  install/hobot_stereonet install/mipi_cam
  1. 检查你这个自定义文件内容,确认它不是普通单目标定,而是包含双目矫正所需参数,例如左右内参、R/P,或至少能解析出 fx/fy/cx/cy/baseline/doffs
cat /home/sunrise/lings_ws/install/mipi_cam/lib/mipi_cam/config/imx219_640x352_G.yaml

另外注意分辨率必须和当前 640x352、双目输入格式匹配。如果文档要求的是类似 calib_param.txt 的格式,直接给普通 camera calibration yaml 可能不行。

  1. 复现后看下段错误信息:
sudo dmesg -T | tail -n 50

如果还不行,把自定义标定文件前几十行、run_stereo.shcalib_method/标定路径相关参数贴出来,重点看 StereoNet 实际拿到了什么参数。

我在另一块 X5 上把这个 -11 复现了一遍,问题基本可以确定不在相机链路,而是在标定文件格式混用了

你日志里 mipi_cam 后面还能继续识别两颗 IMX219;先挂掉的是 stereonet_model_node,而且刚打印完 init StereoRectifyexit code -11。这个位置正好是 StereoNet 读取自定义标定文件的地方。

我对照了 hobot_stereonet 2.5.5/2.5.6 的源码。旧版解析器读的是这种结构:

stereo0:
  cam0:
    intrinsics: [fx, fy, cx, cy]
    distortion_coeffs: [...]
    distortion_model: radtan
    resolution: [width, height]
  cam1:
    T_cn_cnm1:
      - [r00, r01, r02, tx]
      - [r10, r11, r12, ty]
      - [r20, r21, r22, tz]
      - [0.0, 0.0, 0.0, 1.0]
    intrinsics: [fx, fy, cx, cy]
    distortion_coeffs: [...]
    distortion_model: radtan
    resolution: [width, height]

而你日志里的文件是:

.../mipi_cam/config/imx219_640x352_G.yaml

这类文件通常是 mipi_camleft_camera_matrix / right_camera_matrix / R / T 格式。旧版 StereoNet 找不到 cam0.intrinsics 后得到空数组,随后源码直接访问 cam0_intrinsics[0],没有长度检查,所以不是普通的“参数无效”报错,而是直接段错误。

源码位置可以看这里:

我用 X5 板上现有 hobot_stereonet 2.5.5 / mipi_cam 2.5.2 做了离线 A/B。直接把 mipi_cam 风格 YAML 传给 stereo_calib_file_path,稳定复现 exit code -11;转换成 stereo0.cam0/cam1 后,能够加载标定、建立 undistort map,并跑完板上自带的 5 对离线图。

附件里放了一个小转换脚本。先这样转:

python3 convert_mipi_calib_to_stereonet.py \
  --input /home/sunrise/lings_ws/install/mipi_cam/lib/mipi_cam/config/imx219_640x352_G.yaml \
  --output /home/sunrise/lings_ws/src/imx219_640x352_stereonet.yaml \
  --translation-unit auto

然后把 StereoNet 的参数 指向新文件:

bash run_stereo.sh \
  --mipi_gdc_enable False \
  --calib_method custom \
  --stereo_calib_file_path /home/sunrise/lings_ws/src/imx219_640x352_stereonet.yaml

有两个地方容易混:

  1. camera_calibration_file_path 是给 mipi_cam 的;stereo_calib_file_path 是给 hobot_stereonet 的。关闭 GDC 后,后者不能继续直接塞一个单目或 mipi_cam 专用格式文件。
  2. T 要表示左目到右目的外参,最终单位是米。脚本会检查基线并在米/毫米明显可判断时自动处理;判断不了就直接停止,不会悄悄写错。

如果你的畸变参数只有 4 个,脚本会要求明确模型:普通针孔用 --distortion-model radtan,鱼眼用 --distortion-model equidistant。不要猜,按你标定时选的模型填。

正常后日志至少应该出现:

=> load stereo calib from: ...imx219_640x352_stereonet.yaml
=> Kl:
=> Kr:
=> build_undistmap
=> rectify fx: ..., fy: ..., baseline: ...

这一步不需要换相机,也不需要开 GDC。它解决的是 custom 文件导致的崩溃。最后还要用你的双目画面检查极线是否对齐、深度是否准确;我这边的离线 PASS 不能替代你那套 IMX219 的实拍验收。

如果转换脚本报缺字段,把 imx219_640x352_G.yaml 前 80 行贴出来(标定参数可以保留,别贴账号或密钥),我再按它的实际键名补一下。

topic35644_stereonet_calib_converter.zip (5.0 KB)

这样是标定文件有问题导致的吗

看日志,标定文件已经加载进来了:StereoRectify 从 onet.yaml 里读出了 Kl/Kr/Dl/Dr/R_rl,说明路径和文件结构都解析通过,之前"加载就崩"的问题已经解决。现在文件内容本身是否对,重点看两处:

1. 内参对应的分辨率要和 mipi_cam 实际输出分辨率一致
你日志里 cx≈795、cy≈611,对应的是 1640x1232 这个档位(IMX219 binning 模式)标出来的内参。如果 mipi_cam 现在输出的不是这个分辨率,内参和图像对不上,矫正和深度都会错,需要按输出分辨率等比缩放 fx/fy/cx/cy,或者直接按输出分辨率重新标。

2. 畸变模型是否匹配
你的 Dl/Dr 各有 8 个非零畸变系数(rational 8 参数模型),而官方示例标定文件是 kalibr 的 pinhole-radtan,畸变只有 4 个系数:

cam0:
  camera_model: pinhole
  distortion_model: radtan
  intrinsics: [fx, fy, cx, cy]
  distortion_coeffs: [k1, k2, p1, p2]

官方标定流程见 AMR 开发指南 3.5.2 双目内参标定:

如果现在深度明显不准,建议先按官方流程出一份 radtan 格式的标定文件对比验证。

另外补两个信息好进一步确认:mipi_cam 当前输出分辨率是多少?图里显示的 0.29m 左右和实际测量距离差多少?

是的,这次仍然是标定几何的问题,不过和前一次不是同一层:前一次是文件 schema 混用导致 -11;现在 StereoRectify 已经能读出 Kl/Kr/D/R,说明格式和路径已经通了,剩下的是文件里的内参与实际 640×352 图像对不上

我把你新日志里的数值抄出来核了一遍:

mipi_cam 输出:640×352

左目主点:cx=794.69, cy=610.88
右目主点:cx=875.17, cy=663.63

640×352 图像的合法像素范围是 x=[0,640)y=[0,352)。左右两个主点都跑到画面外了,而且不是差几像素:右目分别越界约 235 px 和 312 px。这样的 K 虽然能被 OpenCV/StereoNet 解析,生成出来的 remap 也会大面积采不到两目共同有效的源像素,所以会出现你图里大片单色、深度几乎都挤在 0.3 m 左右的现象。

(图 1:主点与 640×352 边界对照,见文末)

我在 X5 上用日志中的 K/D 做了一个隔离 A/B。按 640×352 输入/输出网格计算时,越界 K 的左右 remap 共同有效覆盖为 0%;按板上 544×448 模型输出网格计算也只有约 22.17%。把 K 按“已明确的直接纯 resize、无 crop”做比例换算后,两组对照分别恢复到 100% 和约 99.99%。

(图 2:X5 remap 有效覆盖 A/B,见文末)

这里要强调:这个对照只是证明“分辨率/K 不匹配会把 remap 搞坏”,不是在替你猜相机的 crop 参数。我对照里显式假设了 1640×1232 → 640×352 是直接 resize;但两者长宽比不同,sx=0.39024sy=0.28571,如果 ISP 中间做过 crop/ROI,这样直接缩 K 仍然会错。上面的覆盖率也会随你完整的 R/T 和实际输出模型变化,不能当作真实相机的最终百分比。

最稳的处理顺序是:

  1. 先确认标定时左右原图的准确分辨率;
  2. 确认 mipi_cam 从该分辨率到 640×352 之间究竟是纯 resize,还是先 crop 再 resize;
  3. 拿不到准确 crop/resize 参数时,直接对 mipi_cam 实际输出的 640×352 左右图重新做双目标定;
  4. 标定后先看 rectify 左右图的极线误差,再看深度,不能只看彩色深度图能不能显示。

地瓜官方 StereoNet 文档给出的验收门是:640×352 图像的极线对齐误差应小于 1 pixel;官方 stereo_calib 也要求检查重投影误差和 rectify 目录中的矫正图,而不是只看 YAML 是否生成:

只有确认是“无裁剪直接 resize”时,才能这样换 K:

sx = runtime_width  / calibration_width
sy = runtime_height / calibration_height

fx' = sx * fx    cx' = sx * cx
fy' = sy * fy    cy' = sy * cy

如果是 crop(x0, y0, crop_w, crop_h) + resize,公式会变成:

fx' = sx * fx           cx' = sx * (cx - x0)
fy' = sy * fy           cy' = sy * (cy - y0)

其中 x0/y0 必须来自真实管线,不能凭画面居中去猜。

我也把上次的转换脚本加强了。现在默认会检查主点是否落在运行图像内;你这组数值会直接 FAIL,不再生成一个“能加载、但几何错误”的 StereoNet YAML:

python3 convert_mipi_calib_to_stereonet.py \
  --input imx219_640x352_G.yaml \
  --output imx219_640x352_stereonet.yaml \
  --translation-unit auto

预期错误会明确指出:

left principal point (794.69, 610.88) is outside runtime image [0,640) x [0,352)
refusing to guess crop/resize

如果你已经从相机配置确认是纯 resize、没有 crop,可以显式给真实标定分辨率:

python3 convert_mipi_calib_to_stereonet.py \
  --input imx219_calib.yaml \
  --output imx219_640x352_stereonet.yaml \
  --intrinsics-source-width <标定图宽> \
  --intrinsics-source-height <标定图高> \
  --runtime-width 640 \
  --runtime-height 352 \
  --image-transform pure-resize \
  --translation-unit auto

再补一句畸变参数:日志里的 Dl/Dr 是 rational 风格的多参数系数,不能因为官方示例是 4 参数 radtan,就直接把后面的系数删掉。应当使用当初标定时的真实模型;如果 OpenCV 标定启用了 rational model,就保留 rational 参数。模型选错同样会造成边缘严重变形。

附件是增强后的 fail-close 转换器、X5 remap 覆盖分析脚本和这次机器 JSON。它不包含模型或相机数据。

可选源文件见文末附件。

你下一步把下面两项确认一下就够了:

  • 这组 K 真正对应的标定图分辨率;
  • mipi_cam 到 640×352 之间有没有 crop/ROI(如果有,给出 x/y/宽/高)。

如果拿不到第二项,直接在最终 640×352 输出上重新标定,会比继续手调 K 更可靠。

topic35644_geometry_guard_source.zip (12.9 KB)