Opencv SolvePnP调用实战

1.环境说明与应用说明

    VS2015+opencv3.4,实际应用在MFC环境中!主要是用来做定位,利用平面靶标给机器人的工具快换提供定位信息

2.实际调用

CV_EXPORTS_W bool solvePnP( InputArray objectPoints, InputArray imagePoints,
                            InputArray cameraMatrix, InputArray distCoeffs,
                            OutputArray rvec, OutputArray tvec,
                            bool useExtrinsicGuess = false, int flags = SOLVEPN
P_ITERATIVE );

参数说明
参数变量名类型说明
objectPointsstd::vector<cv::Point3d>特征点物理坐标
imagePointsstd::vector<cv::Point2d>特征点图像坐标
cameraMatrixcv::Mat(3, 3, CV_32FC1)相机内参:3*3的float矩阵
distCoeffscv::Mat(1, 5, CV_32FC1)相机畸变参数
rvec 输出的旋转向量
tvec 输出的平移向量
useExtrinsicGuess 0 
flags  计算方法

 

其中重点flags参数选择选择如下所示:

enum { SOLVEPNP_ITERATIVE = 0,
       SOLVEPNP_EPNP      = 1, //!< EPnP: Efficient Perspective-n-Point Camera Pose Estimation @cite lepetit2009epnp
       SOLVEPNP_P3P       = 2, //!< Complete Solution Classification for the Perspective-Three-Point Problem 
       SOLVEPNP_DLS       = 3, //!< A Direct Least-Squares (DLS) Method for PnP  @cite hesch2011direct
       SOLVEPNP_UPNP      = 4, //!< Exhaustive Linearization for Robust Camera Pose and Focal Length Estimation 
       SOLVEPNP_AP3P      = 5, //!< An Efficient Algebraic Solution to the Perspective-Three-Point Problem 
       SOLVEPNP_MAX_COUNT      //!< Used for count
};

本文的应用主要是基于同一平面上的标准特征点,所以采用SOLVEPNP_ITERATIVE 方法。

结果直接上图:

warning:

切记,虽然Opencv的参数偏爱float类型,但是solvepnp中除了相机内参和畸变参数矩阵是用float类型外,其余的矩阵都是double类型,不然出出现计算结果不正确的情况。
 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab simulink笔记05 —— 积分模块

1.连续积分模块&#xff1a;integrator 例子见&#xff1a;matlab simulink笔记06 —— 利用simulink求解微分方程/simulink框图与控制系统框图的区别

squid在企业网中的应用

一&#xff1a;squid简介&#xff1a; Squid是一种在Linux系统下使用的优秀的代理服务器软件。Squid是一个缓存internet数据的一个软件&#xff0c;它接收用户的下载申请&#xff0c;并自动处理所下载的数据。也就是说&#xff0c;当一个用户想要下载一个主页时&#xff0c;它向…

win10+tensorflow faster-RCNN 训练自己的数据集

首先&#xff0c;感谢博客上各路大佬的无私奉献&#xff01;但是也不得不吐槽下&#xff0c;大佬些写博客的时候能尽量写的对小白友好一点吗&#xff1f;期间遇到各种坑&#xff0c;说多了都是泪啊&#xff01;话不多说&#xff0c;上正题&#xff01; 环境&#xff1a;win10a…

matlab simulnk笔记07——模块(接地模块group、终止模块terminal、信号合并mux与分解模块demux)

1.接地模块group 2.终止模块terminal 3.信号合并mux 注意:合并仅仅指的是物理上的合并,数学上真正意义上的合并,只是将多个信号放在同一个管道上统一传输给显示终端,但是每个信号之间互不影响,是相

二叉搜索树的插入与删除图解

一、二叉搜索树&#xff08;BSTree&#xff09;的概念 二叉搜索树又被称为二叉排序树&#xff0c;那么它本身也是一棵二叉树&#xff0c;那么满足以下性质的二叉树就是二叉搜索树&#xff1a;1、若左子树不为空&#xff0c;则左子树上左右节点的值都小于根节点的值2、若它的右子…

面试总结

lru算法&#xff1a;最近最少使用  1.新数据插入到链表头部&#xff1b;  2.每当缓存命中&#xff08;即缓存数据被访问&#xff09;&#xff0c;则将数据移到链表头部&#xff1b;  3.当链表满的时候&#xff0c;将链表尾部的数据丢弃。 自定义控件&#xff1a; 1.measu…

win10+anaconda安装tensorflow和keras遇到的坑小结

win10下利用anaconda安装tensorflow和keras的教程都大同小异&#xff08;针对CPU版本&#xff0c;我的gpu是1050TI的MAX-Q&#xff0c;不知为啥一直没安装成功&#xff09;&#xff0c;下面简单说下步骤。 一 Anaconda安装 一般来说&#xff0c;python选择3.6的&#xff0c;目…

现代制造工程课堂笔记07——应力应变分析(考点应力莫尔圆)

目录 选择判断题&#xff0c;简单计算在莫尔圆那里出 一、单向拉伸中的应力应变 手写笔记 选择判断题&#xff0c;简单计算在莫尔圆那里出 一、单向拉伸中的应力应变 、 手写笔记

win10+tensorflow CPU 部署CTPN环境

刚弄明白CTPN部署的时候&#xff0c;CTPN作者刚更新了简易代码版本&#xff0c;看介绍是把代码优化了不需要多的配置。。。感觉好忧伤&#xff01; 源码地址&#xff1a;https://github.com/eragonruan/text-detection-ctpn/tree/master 新版本地址&#xff1a;https://githu…

css如何实现背景透明,文字不透明?

之前做了个半透明弹层&#xff0c;但设置背景半透明时&#xff0c;子元素包含的字体及其它元素也都变成了半透明。对opacity这个属性认识的不透彻&#xff0c;在这里做一些总结&#xff0c;方便以后使用。 背景透明&#xff0c;文字不透明的解决方法&#xff1a;为元素添加一个…

是什么时候开始学习gulp了

转自&#xff1a;http://www.ydcss.com/archives/18 简介&#xff1a; gulp是前端开发过程中对代码进行构建的工具&#xff0c;是自动化项目的构建利器&#xff1b;她不仅能对网站资源进行优化&#xff0c;而且在开发过程中很多重复的任务能够使用正确的工具自动完成&#xff1…

matlab GUI——按下按钮在指定的坐标下绘制函数图像

目录 1.组件布局 2.回调函数设置 3.编写回调函数 1.组件布局 2.回调函数设置 右键单击plot按钮——查看回调——call backs

【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)

Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模。团队中的架构师会通过建模确定应用程序是否满足客户的需求。 你可以创建不同级别的详细模型&#xff0c;并将它们彼此结合、测试然后发布到你的开发计划里。 在这个实验中…

深度学习基础(一)起源

目录 一、DP的前世 1.perceptron 2.NN 3.DP 二、DP的基础知识 1.convolution 2.padding 3.pooling 4.Flatten 5.fully connected 6.dropout 一、DP的前世 深度学习发展至今经历颇为曲折&#xff0c;上世纪起源&#xff0c;火热起来也是20世纪初的时候&#xff0c;具体时…

ANSYS经典界面中梁单元实例全解析

转载链接&#xff1a;http://www.jishulink.com/content/post/361389 文中红色部分为自己添加&#xff01;&#xff01;&#xff01; 转载的文章中提到的梁单元截面是常用的工字形&#xff0c;那么要是不规则的截面形状的话需要自己进行截面形状绘制&#xff0c;具体可以参考…

ant的安装和使用

1.ant的安装 1.1 添加环境变量&#xff1a;ANT_HOMED:\software\ant\apache-ant-1.10.1 在path中添加&#xff1a;%ANT_HOME%\bin 1.2 测试是否安装成功 在cmd中输入ant&#xff0c;如果出现如下提示表示安装成功 2.定义简单的build.xml 2.1 创建HelloWord.java package test; …

Language-Directed Hardware Design for Network Performance Monitoring——Marple

网络监控困难 1、仅仅通过去增加特定的监控功能到交换机是不能满足运营商不断变化的需求的。&#xff08;交换机需要支持网络性能问题的表达语言&#xff09;2、他们缺乏对网络深处的性能问题进行本地化的可见性&#xff0c;间接推断网络问题的原因3、当前的交换机监控并没有提…

深度学习基础(四)优化函数(梯度下降函数)

梯度下降函数也就是优化函数&#xff0c;在神经网络训练过程最重要的函数。重要程度类似于调校对于汽车的重要性&#xff0c;搭建模型和参数设置等操作“造好了一辆汽车”&#xff0c;优化函数“调校”。因为汽车最终的操控性和加速性能等指标很大程度取决于调校&#xff0c;调…

js 实现 复制 功能 (zeroclipboard)

#复制功能因访问权限和安全问题&#xff0c; 被浏览器禁了# 我要实现的功能&#xff1a;点击复制按钮&#xff0c;复制浏览器的当前页面地址&#xff0c;加上用户选择的参数&#xff08;用户查找过滤&#xff09;&#xff0c;直接将该链接发给别人&#xff0c;点击打开就是对应…