我对在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.
如何从图像点生成这些对象点?他们说这里的对象坐标空间是什么意思?
答案 0 :(得分:1)
cv2.solvePnP()
方法通常用于姿势估计,换句话说,可以用于估计2D图像中3D对象的方向。因此,为此,您需要在对象的3D模型中标记一些关键点(objectPoints
,并在2D图像中检测这些关键点(imagePoints
)。
您可以参考此answer,以获取该技术在脸部姿势估计中的应用。