Opencv学习(11)——PNP求解函数solvePnP()

void solvePnP(InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec, OutputArray tvec, bool useExtrinsicGuess=false, int flags = CV_ITERATIVE)

参数解释

  • objectPoints:世界坐标系中的3D点坐标,单位mm
  • imagePoints:图像坐标系中点的坐标,单位像素
  • cameraMatrix:相机内参矩阵
  • distCoeffs:畸变系数
  • rvec:旋转矩阵
  • tvec:平移矩阵
  • useExtrinsicGuess:是否输出平移矩阵和旋转矩阵,默认为false
  • flags:SOLVEPNP _ITERATIVE、SOLVEPNP _P3P、SOLVEPNP _EPNP、SOLVEPNP _DLS、- SOLVEPNP _UPNP
C知道:OpenCV求解PnP函数有以下几个: 1. solvePnP():使用EPnP算法或Iterative算法求解PnP问题。 参数意义: - objectPoints:3D物体坐标点集,每个点应该是一个Vec3f或Vec3d类型的向量。 - imagePoints:2D图像坐标点集,每个点应该是一个Vec2f或Vec2d类型的向量。 - cameraMatrix:相机内参矩阵,应该是一个3x3的浮点型矩阵。 - distCoeffs:相机畸变系数,应该是一个1x5或1x8的浮点型向量。 - rvec:输出的旋转向量,应该是一个3x1的浮点型向量。 - tvec:输出的平移向量,应该是一个3x1的浮点型向量。 - useExtrinsicGuess:是否使用外部估计值,默认为false。 - flags:算法标志位,默认为0。 2. solvePnPRansac():使用RANSAC算法求解PnP问题。 参数意义: - objectPoints:同上。 - imagePoints:同上。 - cameraMatrix:同上。 - distCoeffs:同上。 - rvec:同上。 - tvec:同上。 - useExtrinsicGuess:同上。 - iterationsCount:迭代次数,默认为100。 - reprojectionError:重投影误差阈值,默认为8.0。 - confidence:置信度,默认为0.99。 - inliers:输出的内点集合,应该是一个1xN的整型向量。 - flags:算法标志位,默认为0。 3. solvePnPRefineLM():使用Levenberg-Marquardt算法对solvePnP()的结果进行优化。 参数意义: - objectPoints:同上。 - imagePoints:同上。 - cameraMatrix:同上。 - distCoeffs:同上。 - rvec:输入的旋转向量,应该是一个3x1的浮点型向量。 - tvec:输入的平移向量,应该是一个3x1的浮点型向量。 - useExtrinsicGuess:同上。 - criteria:优化算法的终止准则,默认为TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON)。 不同方法的效果: - solvePnP():速度较快,但精度较低。 - solvePnPRansac():速度较慢,但精度较高,适用于存在噪声或离群点的情况。 - solvePnPRefineLM():对solvePnP()的结果进行优化,可以提高精度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

令狐少侠、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值