OpenCV4中提供了projectPoints()函数用于计算世界坐标系中的三维点投影到像素坐标系中的二维坐标。

例:程序参数来自下述图片


运行结果:

附上例代码:

#include <opencv2\opencv.hpp>
#include <iostream>
#include <vector>using namespace std;
using namespace cv;int main()
{/**********本程序中用到的图像是代码清单10-10中相机标定时的第一张图像**********//***************各项参数都是标定时得到的*****************///输入前文计算得到的内参矩阵和畸变矩阵Mat cameraMatrix = (Mat_<float>(3, 3) << 532.016297, 0, 332.172519,0, 531.565159, 233.388075,0, 0, 1);Mat distCoeffs = (Mat_<float>(1, 5) << -0.285188, 0.080097, 0.001274,-0.002415, 0.106579);//代码清单10-10中计算的第一张图像相机坐标系与世界坐标系之间的关系Mat rvec = (Mat_<float>(1, 3) << -1.977853, -2.002220, 0.130029);Mat tvec = (Mat_<float>(1, 3) << -26.88155, -42.79936, 159.19703);//生成第一张图像中内角点的三维世界坐标Size boardSize = Size(9, 6);//方格标定板内角点数目(行,列)(从1开始数的)Size squareSize = Size(10, 10);//棋盘格每个方格的真实尺寸vector<Point3f> PointSets;for (int j = 0; j < boardSize.height; j++){for (int k = 0; k < boardSize.width; k++){Point3f realPoint;// 假设标定板为世界坐标系的z平面,即z=0,世界坐标系是用户自己定义的,这里设定为标定板左上角realPoint.x = j*squareSize.width;realPoint.y = k*squareSize.height;realPoint.z = 0;PointSets.push_back(realPoint);}}//根据三维坐标和相机与世界坐标系时间的关系估计内角点像素坐标vector<Point2f> imagePoints;projectPoints(PointSets, rvec, tvec, cameraMatrix, distCoeffs, imagePoints);//依次是:空间点坐标、两个坐标系之间的对应关系,相机的内参矩阵,畸变矩阵,以及映射到图像中的坐标for (int i = 0; i < imagePoints.size(); i++){cout << "第" << to_string(i) << "个点的坐标" << imagePoints[i] << endl;}waitKey(0);return 0;
}

OpenCV4每日一练day8:模型投影函数projectPoints()相关推荐

  1. OpenCV4每日一练day11:单目位姿估计

    一.单目位姿估计   根据相机成像模型,如果已知相机的内参矩阵.世界坐标系中若干空间点的三维坐标和空间点在图像中投影的二维坐标,那么可以计算出世界坐标系到相机坐标系的旋转向量和平移向量.如图所示,当知 ...

  2. OpenCV4每日一练day12:双目相机标定

    一.标定说明--<OpenCV4快速入门> 二.标定 文件准备: 运行结果: <OpenCV4快速入门>中的运行结果: 附上例代码: #include <opencv2\ ...

  3. QT每日一练day8:信号与槽机制

    一. 创建一个空的项目 添加QT的支持 添加main.cpp 编译报错,Q_OBJECT放在CPP文件中会报这个错误,必需放头文件,这个宏比较特殊,只有放头文件才能展开 添加头文件test.h mai ...

  4. OpenCV4每日一练day14:光流法跟踪移动物体

    一.稠密光流法跟踪移动物体 例1 #include <opencv2/opencv.hpp> #include <iostream>using namespace cv; us ...

  5. OpenCV4每日一练day13:双目相机校正

    一.双目相机校正说明--<OpenCV4快速入门> 二.双目相机校正 文件准备: 运行结果: 附代码: #include <opencv2\opencv.hpp> #inclu ...

  6. OpenCV4每日一练day10:图像校正

    一.OpenCV提供的函数 二.校正 准备文件: 运行(GIF动图) 附代码1(上图使用): #include <opencv2\opencv.hpp> #include <iost ...

  7. OpenCV4每日一练day9:单目相机标定

    一.单目相机模型 二.OpenCV提供的相关函数 三.标定 准备文件: 运行(GIF动图) 最终标定结果: 附代码: #include <opencv2\opencv.hpp> #incl ...

  8. OpenCV4每日一练day7:视频加载、摄像头调用、视频文件保存

    一.视频加载(读取)/摄像头调用使用的是同一个函数:VideoCapture( ) get函数使用,如video.get(CAP_PROP_FOURCC) 视频实时显示与播放:video>> ...

  9. OpenCV4每日一练day4:Mat类的创建、赋值、读取

    一.了解Mat类 二.三种常用Mat类的创建方式: 创建Mat类的rows和cols参数是从1开始数 Mat.rowRange(int x,int y)和Mat.rowRange(range(int ...

最新文章

  1. 让机器学习自动帮我们建模,这4个Python库能让你大开眼界
  2. Mysql学习笔记004
  3. 基于python的游戏设计与实现-python五子棋游戏的设计与实现
  4. Hlg 1407 【最小点权覆盖】.cpp
  5. predis如何实现phpredis的pconnect方法
  6. mysql主从复制之异常解决--- Slave_IO_Running: NO
  7. 【摘录】《程序设计导引及在线实践》之排列
  8. Funcode-贪吃蛇
  9. 【Assertion failed (blockSize % 2 == 1 blockSize > 1) in cv::adaptiveThreshold】
  10. 华为16道经典面试题
  11. 企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南...
  12. 【Paper Quickthrough】2021 Bert 各向异性
  13. 三阶行列式简便算法_三阶行列式计算方法
  14. AES前端flutter加密与后端java解密pad block corrupted问题
  15. 计算机c盘红色,win7系统c盘空间不足变红了如何解决_windows7的C盘变成红色怎么办...
  16. 笔记 GWAS 操作流程2-5:杂合率检验
  17. unity木船模型,古代帆船模型,古船
  18. OpenCV深入学习(6)--直方图之calcHist使用(补)
  19. OpenCV基础篇——图形图像旋转
  20. SQL Server 触发器( trigger ) ------- 用例详解( 你需要举一反三的触发器实用方法都在这了 )

热门文章

  1. 目标赋予生命的意义和目的
  2. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上拍卖秒杀竞价系统
  3. android代码查找图像,Android平台上利用opencv进行图像的边沿检测
  4. 代码审计之CVE-2017-6920 Drupal远程代码执行漏洞学习
  5. Spring的入门学习笔记 (注解)
  6. node 创建静态服务器并自动打开浏览器
  7. 遇见JMS[1] —— activeMQ的简单使用
  8. Vs2012调试本地windows服务
  9. 【转载】通往性能优化的天堂-地狱 JOIN方法说明
  10. php中split的使用,php中常用字符串的用法总结 - split