本篇博客主要介绍cv2中的姿态估计,在图像中绘制一些2D的线条来产生3D的效果。
下面是示例代码:
# encoding:utf-8
import cv2
import numpy as np
import glob
# Load previously saved data摄像头矩阵和畸变系数
with np.load('B.npz') as X:
mtx, dist, _, _ = [X[i] for i in ('mtx', 'dist', 'rvecs', 'tvecs')]
# 函数 draw 它的参数有棋盘上的角点
# 使用 cv2.findChessboardCorners() 得到
# 绘制的 3D 坐标轴上的点
def draw(img, corners, imgpts):
corner = tuple(corners[0].ravel())
img = cv2.line(img, corner, tuple(imgpts[0].ravel()), (255, 0, 0), 5)
img = cv2.line(img, corner, tuple(imgpts[1].ravel()), (0, 255, 0), 5)
img = cv2.line(img, corner, tuple(imgpts[2].ravel()), (0, 0, 255), 5)
return img