【问题标题】:solvePnP throws error: (-215:Assertion failed) src.size == dst.size && src.channels() == dst.channels() in function 'cvConvertScale'solvePnP 抛出错误:(-215:Assertion failed) src.size == dst.size && src.channels() == dst.channels() in function \'cvConvertScale\'
【发布时间】:2022-11-11 04:03:37
【问题描述】:

我有一个盒子的 4 个世界坐标点和它们的图像点。我正在尝试计算相机的姿势,但出现错误

File c:\Users\nmorsi200\AppData\Local\Temp\Prog6_4.py", line 292, in <module>
    cv.solvePnP(objectPoints,imagePoints,cameraMatrix,distCoeffs)
cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\core\src\convert_c.cpp:113: error: (-215:Assertion failed) src.size == dst.size && src.channels() == dst.channels() in function 'cvConvertScale

这是我的代码:

imagePoints = np.float32([[[ 544 ,337 ],
        [ 886 ,337   ],
        [886 ,781],
        [ 544 ,781 ]]])


objectPoints = np.float32([[[ 430 ,-210,90 ],
        [ 430 ,-110 ,90  ],
        [580 ,-210,90],
        [ 886 ,-110,90 ]]])

cameraMatrix = np.float32([ 1.5968554012182622e+04, 0., 5.9163145834154648e+02, 0.,
       1.0919346214593939e+04, 8.3519145165493478e+02, 0., 0., 1. ])

distCoeffs = np.float32([ 3.1817705820413217e+01, -2.4334106040843017e+03,
       -5.7690325903983741e-01, -8.4352650966664180e-02,
       -1.9337299660588971e+04 ])

cv.solvePnP(objectPoints,imagePoints,cameraMatrix,distCoeffs) 

【问题讨论】:

    标签: python opencv computer-vision opencv-solvepnp camera-projection


    【解决方案1】:

    你的相机矩阵是一个一维数组,当它应该是形状为(3,3) 的二维数组。 OpenCV 需要这种形状。它不接受平面阵列。

    cameraMatrix = np.float32([ ... ]).reshape((3,3))
    

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 2019-11-12
      • 2019-06-26
      • 2020-09-17
      • 2020-10-13
      • 2021-04-14
      • 2021-04-19
      • 1970-01-01
      • 2022-08-12
      相关资源
      最近更新 更多