You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

双目标定后如何正确重映射立体图像并调整ROI

立体相机标定后调整图像尺寸与ROI处理的正确方式

你的整体思路方向是对的,但有个关键细节需要调整——左右相机的ROI是各自独立的,不能共用同一组裁剪参数,我来帮你理清楚正确的处理步骤:

首先,先明确你标定阶段得到的ROI的意义:

  • 你通过cv2.stereoRectify得到了初始的roi1和roi2,之后又用cv2.getOptimalNewCameraMatrix针对你调整后的目标尺寸(320,240)重新计算了一组roi1和roi2——这组重新计算的ROI才是你后续裁剪时应该用的,因为它适配了你缩小后的图像尺寸。

然后,正确的双图像裁剪代码应该是这样:

# 处理左相机图像
dst1 = cv2.remap(frame, mapx1, mapy1, cv2.INTER_LINEAR)
# 取出左相机对应的ROI参数
x1, y1, w1, h1 = roi1
# 裁剪左图
dst1 = dst1[y1:y1+h1, x1:x1+w1]

# 处理右相机图像
dst2 = cv2.remap(frame2, mapx2, mapy2, cv2.INTER_LINEAR)
# 取出右相机对应的ROI参数
x2, y2, w2, h2 = roi2
# 裁剪右图
dst2 = dst2[y2:y2+h2, x2:x2+w2]

为什么要分开用各自的ROI?因为左右相机的畸变程度、内参都有差异,哪怕你把图像缩放到了同一尺寸,校正后没有黑边的有效区域(也就是ROI)的位置和大小大概率是不一样的。如果强行用同一组x,y,w,h裁剪,要么会裁掉其中一张图的有效内容,要么会保留另一张图的黑边,影响后续的立体匹配效果。

另外补充一点:你在cv2.stereoRectify里已经加了cv2.CALIB_ZERO_DISPARITY这个参数,它会让左右相机的主光轴保持平行,此时左右ROI的高度应该是一致的,宽度可能会有细微差别,但各自用对应的ROI裁剪就能保证两张图的有效区域对齐,方便后续的立体视觉处理。

内容的提问来源于stack exchange,提问作者gaetano ma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:14:11