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

使用OpenCV findHomography生成变换矩阵精度不足问题排查

求解图像中桌子到实际桌子的单应变换矩阵精度问题

我已获取图像帧中桌子四个角的坐标及该桌子的实际尺寸,想要求解从图像中桌子(第一张图)到实际桌子(第二张图)的变换矩阵T,实现将原始帧中的点(如球的弹跳位置)映射到第二张图的矩形区域中。

我尝试使用OpenCV的findHomography计算变换矩阵,但得到的结果精度完全达不到要求。我需要的是T = A -> B,其中:

A:原始图像中桌子的角点坐标

[[512.10633894 269.22351997]  # 底部角点
 [325.78198672 236.36953072]  # 左侧角点
 [536.67952727 199.18259532]  # 顶部角点
 [715.21023044 214.80199122]] # 右侧角点

B:目标实际坐标

[[152.5   0. ]
 [  0.    0. ]
 [  0.  274. ]
 [152.5 274. ]]

计算得到的变换矩阵T

[[-5.96154850e-01 -3.38096031e+00  9.92931129e+02]
 [-5.59829402e-01  3.17495425e+00 -5.68494643e+02]
 [-2.76038296e-04 -8.61104226e-03  1.00000000e+00]]

使用该T矩阵变换A点后,得到的结果B'完全不符合预期:

[[[-221    0   -1]]
 [[   0    0   -1]]
 [[   0 -235    0]]
 [[-159 -285   -1]]]

结果量级勉强接近,但精度极差,且所有值均为负数,我完全无法理解原因。为什么B'不等于B?

相关代码如下:

T, status = cv.findHomography(img_corners, TABLE_COORDS, cv.RANSAC, 5.)
T_img = cv.transform(img_corners.reshape((-1, 1, 2)), T)

我尝试将RANSAC的阈值参数从5.0调小,但没有任何效果...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:45:48