总体思路:先通过opencv 识别二维码的的四个像素角位置,然后把二维码的物理位置设置为
cv::Point3f(-HALF_LENGTH, -HALF_LENGTH, 0), //tl
cv::Point3f(HALF_LENGTH, -HALF_LENGTH, 0), //tr
cv::Point3f(HALF_LENGTH, HALF_LENGTH, 0), //br
cv::Point3f(-HALF_LENGTH, HALF_LENGTH, 0) //bl
,相当于这是一个任意找的物体上的四个点,对应的我们找到了在图像中对应的像素坐标。这就解决了世界坐标系与像素坐标系之间的对应问题,然后再通过PNP求解的方式,就可以通过旋转向量和平移向量就可以得到相机坐标系相对于世界坐标系的旋转参数与平移情况,也就是二维码离相机的实际位姿。
# coding:utf-8
import cv2
import numpy as np
#pip install openc v -python
# !!!!这里要把参数替换为你自己的相机的内参矩阵 我的像素是 # (480, 640, 3)
camera_matrix = np.array([
[273.4985, 0, 321.2298],
[0, 273.3338, 239.7912],
[0.,