Python OpenCV 项目点中立位置偏离中心

问题描述 投票:0回答:1

我想使用 OpenCV 的 projectPoints 函数在网络摄像头图像中绘制 3D 位置。 在测试过程中,我注意到,我总是与真实对象有一定的偏移。当尝试将原点 (0,0,0) 投影到图像中心时,这一点最为明显。 enter image description here 图像形状为(2988, 5312, 3),大红点是图像中心在(1494, 2656),带有线条的小红点是原点(0,0,0)的投影,其中NO平移且无旋转导致 (1476, 2732)。

主要问题:为什么投影点不在图像中间?

我像这样确定了投影点:

origin_2d, jacobian = cv2.projectPoints(
    np.array([(0.0, 0.0, 0.0)]),
    np.array([(0.0, 0.0, 0.0)]),
    np.array([(0.0, 0.0, 0.0)]),
    mtx,
    dist,
)

所以原点 (0,0,0) 应该投影到 2D,没有平移和旋转,从而出现在图像中心,对吗?

我通过使用您在图像中看到的棋盘执行此处描述的相机校准例程OpenCV 文档:相机校准来获取相机 mtx 和 dist。 我的校准有问题吗?还是我在投影过程中误解了什么?

谢谢并致以最诚挚的问候, 菲利克斯

python opencv computer-vision camera-calibration coordinate-transformation
1个回答
0
投票

图像形状为(2988, 5312, 3),大红点为图像中心在(1494, 2656)

你校准了那个相机,对吗?那么那不是光心。光学中心以及焦距位于相机矩阵中。

(1476, 2732)

看起来更像是这样,尽管我希望这些数字小数点后也有数字。

© www.soinside.com 2019 - 2024. All rights reserved.