tid*_*idy 4 3d opencv image-processing computer-vision camera-calibration
假设我现在已经获得了面欧拉角(俯仰、偏航、滚动)。如何绘制显示面部姿势的 3D 坐标轴。
下面是来自〔实施例在这里:

只要您有相机参数,就可以在纯 OpenCV 中完成此操作。您应该能够创建对应于 x、y、z 轴的三个向量(基本上点 [0,0,0] [1, 0, 0], [0, 1, 0], [0, 0, 1] 其中您稍后将投影到图像平面中。您应该首先根据您的偏航/俯仰/滚动(例如,将它们乘以旋转矩阵)旋转这些点。
为了将 3D 点投影到图像平面,请使用projectPoints函数。它需要 3D 点、相机参数并生成 2D 图像点。获得图像点后,您可以简单地使用line函数在投影中心点(3D 中的 [0,0,0])和轴点的每个结果投影之间绘制线条。
小智 5
一个简单的例子:
def draw_axis(img, R, t, K):
# unit is mm
rotV, _ = cv2.Rodrigues(R)
points = np.float32([[100, 0, 0], [0, 100, 0], [0, 0, 100], [0, 0, 0]]).reshape(-1, 3)
axisPoints, _ = cv2.projectPoints(points, rotV, t, K, (0, 0, 0, 0))
img = cv2.line(img, tuple(axisPoints[3].ravel()), tuple(axisPoints[0].ravel()), (255,0,0), 3)
img = cv2.line(img, tuple(axisPoints[3].ravel()), tuple(axisPoints[1].ravel()), (0,255,0), 3)
img = cv2.line(img, tuple(axisPoints[3].ravel()), tuple(axisPoints[2].ravel()), (0,0,255), 3)
return img
Run Code Online (Sandbox Code Playgroud)