OpenCV:关于solvePnP的困惑

时间:2018-11-14 10:31:10

标签: opencv camera-calibration perspectivecamera

我对在OpenCV中使用solvePnP函数有些困惑。

我有用于相机固有参数的矩阵,并且已经确定了图像中的一些关键点,并且我正在尝试估计用于校准的外部参数。

solvePnP的文档说:

cv2.solvePnP(objectPoints, imagePoints, cameraMatrix, 
distCoeffs[, rvec[, tvec[, useExtrinsicGuess[, flags]]]]) → retval, rvec, tvec

我正在猜测我的imagePoints参数是我检测到的关键点。并且这些技巧以像素为单位指定为(x1, y1), (x2, y2), (x3, y3)

我对objectPoints完全感到困惑。因此,文档说:

objectPoints – Array of object points in the object coordinate space,
3xN/Nx3 1-channel or 1xN/Nx1 3-channel, where N is the number of points.
vector<Point3f> can be also passed here.

如何从图像点生成这些对象点?他们说这里的对象坐标空间是什么意思?

1 个答案:

答案 0 :(得分:1)

cv2.solvePnP()方法通常用于姿势估计,换句话说,可以用于估计2D图像中3D对象的方向。因此,为此,您需要在对象的3D模型中标记一些关键点(objectPoints,并在2D图像中检测这些关键点(imagePoints)。

您可以参考此answer,以获取该技术在脸部姿势估计中的应用。