【问题标题】:Finding Camera Matrix from known Points python从已知点python中查找相机矩阵
【发布时间】:2022-11-02 17:50:36
【问题描述】:

我有一个 3D 模型的 8 个 3d 点和该模型的真实世界照片的 8 个 2d 点。是否可以使用这些 3D 和 2D 点获取该相机的相机矩阵?

这是3D点

      X       Y        Z
0   0.098   35.484   16.58
1   17.34   38.638   16.28
2   27.65   44.133   0.083
3   17.23   38.678  -16.25
4   0.068   35.536  -16.58
5  -17.24   38.799  -16.06
6  -27.67   44.402   0.379
7  -17.10   38.820   16.21 

这是二维点

      X      Y   
0    777    203
1   1015    217
2   1142    440
3   1019    662
4    778    675
5    542    660
6    425    442
7    546    219

这种情况下的相机矩阵是什么以及如何使用 python 获得它

【问题讨论】:

    标签: python computer-vision camera-calibration


    【解决方案1】:

    是的,估计给定 3D 点及其投影的相机矩阵的问题称为相机切除术.你至少需要6分才能解决它。 在 Python 中,您可以使用 OpenCV 的 calibrateCamera 函数:

    retval, cameraMatrix, distCoeffs, rvecs, tvecs = cv2.calibrateCamera(objectPoints, imagePoints, imageSize)
    

    有关相机切除问题的更深入解释,您可以阅读here,第 3.1 节。

    【讨论】:

    • 感谢您的回复,我正在使用此功能,但它需要相机矩阵。它说'calibrateCamera()缺少必需的参数'cameraMatrix'',即使我把它设置为无它仍然要求相机矩阵
    • 您的图像是否有正确的 EXIF 数据?您可以构建具有焦点和主要点(通常是图像大小的一半)的相机内在矩阵。
    • 我实际上是这样做的。我已将矩阵与焦点和主要点放在一起。函数将其更改为输出,但结果不是正确的。因为我有使用棋盘计算的正确矩阵。我想我需要使用平面点作为链接提到answers.opencv.org/question/193188/…
    • 我还发现this nice library 已经实现了我上面引用的深入解释。有一个很好的 Jupyter notebook 一步一步地完成了它。执行直接线性校准this notebook 中的部分是给你的,M 是投影矩阵。
    • 谢谢ara,我会检查一下,如果我让它工作,我会通知你
    猜你喜欢
    • 2020-01-09
    • 2019-12-22
    • 1970-01-01
    • 2018-05-13
    • 2017-04-16
    • 2021-12-22
    • 2017-11-07
    • 1970-01-01
    相关资源
    最近更新 更多