gpt4 book ai didi

python - OpenCV:对于相同的输入参数,SolvePnP给出不同的结果

转载 作者:行者123 更新时间:2023-12-02 16:12:36 30 4
gpt4 key购买 nike

我正在尝试使用python中的solvePnP估计对象的3D姿势。
但是问题是,即使我保持相机和对象都是静态的,solvePnP(rvectvec)的输出也会改变。世界坐标系以对象为中心,并随其移动。我正在传递4个图像点和相应的4个对象点。

调用SolvePnP:

retval, rvec, tvec = cv2.solvePnP(cam.object_points, cam.image_points, cam.camera_matrix, cam.dist_coefficients, None, None, False, cv2.SOLVEPNP_ITERATIVE)

输出1:
Image points: 
[[ 236. 243.]
[ 43. 368.]
[ 404. 372.]
[ 235. 357.]]
Object points:
[[ 0. 0. 0. ]
[ 6.5 0. 0. ]
[ 0. 0. 6.5]
[ 0. 6.5 0. ]]
R VECT==========
[[-0.56619693]
[-2.27732794]
[ 0.71053527]]
T VECT==========
[[ 0.54725923]
[-0.45834745]
[ 0.58522831]]

输出2:
Image points: 
[[ 236. 243.]
[ 43. 369.]
[ 404. 372.]
[ 235. 357.]]
Object points:
[[ 0. 0. 0. ]
[ 6.5 0. 0. ]
[ 0. 0. 6.5]
[ 0. 6.5 0. ]]
R VECT==========
[[ 0.33325838]
[ 2.12767845]
[ 0.98248134]]
T VECT==========
[[ -2.60687131]
[ 0.37989386]
[ 23.85078678]]

目标点和图像点相同,但是solvePnP仍然给出几个不同的结果。以上结果是交替交替出现的。

我应该如何解决?

最佳答案

您可以尝试查看solvePnpGeneric,它返回所有可能的解决方案。 resolvePnp可能会在两个解决方案之间犹豫,并给您交替的结果。

solvePnpGeneric是在OpenCV 4.1.2中引入的,它允许访问不同的解决方案以及它们的重新投影错误。

关于python - OpenCV:对于相同的输入参数,SolvePnP给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44023697/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com