使用PnP算法计算装甲板旋转向量和平移向量

主要分为以下步骤

1 加载相机矩阵和畸变参数

2加载图片并进行预处理

3定义装甲板四个顶点的坐标

4定义装甲板四个顶点在图像中的坐标

5使用PnP算法计算旋转向量和平移向量

主要使用solvePnP函数

6将旋转向量转化为旋转矩阵

7输出旋转矩阵和平移矩阵

#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
    // 加载相机矩阵和畸变参数
    Mat camera_matrix = (Mat_<double>(3, 3) << 2.4533055557326181e+03, 0., 9.4925681914912386e+02, 0.,
                         2.4551723094234911e+03, 5.5454977746938223e+02, 0., 0., 1.);
    Mat distortion_coeffs = (Mat_<double>(1, 5) << -2.7582931901279197e-01, 1.3973322381045875e-01,
                             2.8099747483245295e-03, -1.8185597815801518e-04, 0.);

    // 加载图片并进行预处理
    Mat src = imread("11.jpg");
    Mat gray;
    cvtColor(src, gray, COLOR_BGR2GRAY);

    // 定义装甲板四个顶点的坐标
    vector<Point3f> object_points;
    object_points.push_back(Point3f(-12.5f, -5.5f, 0.f)); // 左下角
    object_points.push_back(Point3f(-12.5f, 5.5f, 0.f));  // 左上角
    object_points.push_back(Point3f(12.5f, 5.5f, 0.f));   // 右上角
    object_points.push_back(Point3f(12.5f, -5.5f, 0.f));  // 右下角

    // 定义装甲板四个顶点在图像中的坐标
    vector<Point2f> image_points;
    image_points.push_back(Point2f(227, 197)); // 左下角
    image_points.push_back(Point2f(214, 89));  // 左上角
    image_points.push_back(Point2f(360, 71));  // 右上角
    image_points.push_back(Point2f(364, 179)); // 右下角

    // 使用PnP算法计算旋转向量和平移向量
    Mat rvec, tvec;
    solvePnP(object_points, image_points, camera_matrix, distortion_coeffs, rvec, tvec);

    // 将旋转向量转化为旋转矩阵
    Mat rotation_matrix;
    Rodrigues(rvec, rotation_matrix);

    // 输出旋转矩阵和平移矩阵
    cout << "Rotation Matrix: " << endl << rotation_matrix << endl;
    cout << "Translation Vector: " << endl << tvec << endl;

    return 0;
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值