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.pswp.cn/news/256584.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256584.shtml
英文地址,請注明出處:http://en.pswp.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、若它的右子…

AlienVault Ossim各版本鏡像下載地址

AlienVault Ossim各版本鏡像下載地址 OSSIM V5.0.3 ISO網盤下載地址 了解Ossim的架構、工作原理和使用方法可以參考我的新書以及http://edu.51cto.com/course/course_id-1186.html 這里提供的視頻教程。 本文轉自 李晨光 51CTO博客&#xff0c;原文鏈接&#xff1a;http://blo…

面試總結

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;目…

rman備份恢復命令之switch

一 switch 命令 1 switch命令用途 更新數據文件名為rman下鏡像拷貝時指定的數據文件名 更新數據文件名為 set newname 命令指定的名字。 2 switch 命令使用前提條件 rman 必須連接到目標數據庫 當switch tablespaces、datafiles、tempfiles時&#xff0c;這些文件必須離線 當…

服務核心 - 工具類

雖然類名稱為CWHService&#xff0c;我理解更多的是工具函數。 主要接口功能有&#xff1a; 1&#xff09;SetClipboardString設置字符串到windows剪貼板 2&#xff09;GetMachineID獲取機器標識&#xff0c;網卡地址MD5加密&#xff1b; 3&#xff09;GetMachineIDEx獲取機器標…

現代制造工程課堂筆記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;為元素添加一個…

SQL Server 使用OPENROWSET訪問ORACLE遇到的各種坑總結

在SQL Server中使用OPENROWSET訪問ORACLE數據庫時&#xff0c;你可能會遇到各種坑&#xff0c;下面一一梳理一下你會遇到的一些坑。 1&#xff1a;數據庫沒有開啟"Ad Hoc Distributed Queries"選項&#xff0c;那么你就會遇到下面坑。 SELECT TOP 10 * FROM OPENROWS…

matlab——FFT傅里葉快速變換

目錄 一、自身的理解與補充 二、其他參考鏈接 一、轉載:https://blog.csdn.net/u013215903/article/details/48091359 FFT是Fast Fourier Transform(快速傅里葉變換)的簡稱,這種算法可以減少計算DFT(離散傅里葉變換,關于此更詳細的說明見后文)的時間,大大提高了運算效…

win10+tensorflow import cv2 bug解決

https://blog.csdn.net/sinat_21591675/article/details/82595812

設計理念 : popup login 在前后臺

popup 意思是一個遮罩層頂在整個網頁最前方&#xff0c;在前臺設計是這樣的&#xff0c;當用戶想在那個界面登入時&#xff0c;就可以有一個遮罩層出現。 在employer或admin&#xff08;后臺&#xff09;操作界面是同個理念&#xff0c;在所有的界面都是有control panel為根節點…

input和raw_input

12345678910python 2#!/usr/bin/env python#coding:utf-8nameraw_input("plese input you name") print namepython3#!/usr/bin/env python#coding:utf-8nameinput("plese input you name") print name本文轉自 小小三郎1 51CTO博客&#xff0c;原文鏈接…

MAATLAB GUI——回調函數的設置(Callbacks)

目錄 1.回調函數創建步驟 1)命令窗口中輸入guide,創建一個新的GUI界面窗口