MRPT笔记——使用编译好的MRPT库建立VS2013项目
接着上一篇《MRPT在VS2013中的配置》,下面接收如何使用编译好的MRPT建立工程项目。
一、设置环境变量
上一篇中,配置MRPT时,使用到了几个相关库,opencv、zlib、wxWidgets、ffmpeg。
设置环境变量,添加路径PATH:
D:\opencv\build\x86\vc12\bin;D:\ffmpeg-r16537-gpl-lshared-win32\bin;D:\MRPT\buildVS2013\bin\Debug;D:\wxWidgets-3.1.0\lib\vc_dll;D:\zlib-1.2.8\win32\Debug;
如果需要编译Release版本,则需另外添加:
D:\MRPT\buildVS2013\bin\Release;D:\zlib-1.2.8\win32\Release;
添加这些路径,主要是把项目可能用到的DLL文件加载到PATH路径中。
二、VS2013项目设置
1、先将D:\Program Files\mrpt-1.4.0\include\mrpt\mrpt-config\mrpt目录下的config.h和version.h复制到D:\Program Files\mrpt-1.4.0\include\mrpt目录下。
2、打开VS2013,建立mrptTest项目:
新建项目——C++——设置文件名mrptTest——WIN32控制台应用程序
3、打开工程属性——VC++目录——包含目录 :
添加目录D:\Program Files\mrpt-1.4.0\include 和 D:\Program Files\mrpt-1.4.0\libs\XXXX\include
第二个包含选项众多,我是将所有libs目录下所有的mrpt文件夹复制到D:\MRPT\buildVS2013\include,然后再添加该目录。
需要用wxWidgets,则添加D:\wxWidgets-3.1.0\include
4、打开工程属性——VC++ 目录——库目录:
在配置Debug中添加目录 D:\MRPT\buildVS2013\lib\Debug
在配置Release中添加目录 D:\MRPT\buildVS2013\lib\Release
三、编写代码
这里采用MRPT的例子,参考 https://raw.githubusercontent.com/MRPT/mrpt/master/doc/mrpt_example1/test.cpp
// mrptTest.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <mrpt/poses/CPoint3D.h>
#include <mrpt/poses/CPose2D.h>
#include <mrpt/poses/CPose3D.h>
#include <mrpt/utils/CTicTac.h> using namespace mrpt::utils;
using namespace mrpt::poses;
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
try
{
// The landmark (global) position: 3D (x,y,z)
CPoint3D L(, , ); // Robot pose: 2D (x,y,phi)
CPose2D R(, , DEG2RAD(45.0f)); // Camera pose relative to the robot: 6D (x,y,z,yaw,pitch,roll).
CPose3D C(0.5f, 0.5f, 1.5f, DEG2RAD(-90.0f), DEG2RAD(), DEG2RAD(-90.0f)); // TEST 1. Relative position L' of the landmark wrt the camera
// --------------------------------------------------------------
cout << "L: " << L << endl;
cout << "R: " << R << endl;
cout << "C: " << C << endl;
cout << "R+C:" << (R + C) << endl;
//cout << (R+C).getHomogeneousMatrix(); CPoint3D L2;
CTicTac tictac;
tictac.Tic();
size_t i, N = ;
for (i = ; i<N; i++)
L2 = L - (R + C);
cout << "Computation in: " << 1e6 * tictac.Tac() / ((double)N) << " us" << endl; cout << "L': " << L2 << endl; // TEST 2. Reconstruct the landmark position:
// --------------------------------------------------------------
CPoint3D L3 = R + C + L2;
cout << "R(+)C(+)L' = " << L3 << endl;
cout << "Should be equal to L = " << L << endl; // TEST 3. Distance from the camera to the landmark
// --------------------------------------------------------------
cout << "|(R(+)C)-L|= " << (R + C).distanceTo(L) << endl;
cout << "|L-(R(+)C)|= " << (R + C).distanceTo(L) << endl; return ;
}
catch (exception &e)
{
cerr << "EXCEPCTION: " << e.what() << endl;
return -;
}
catch (...)
{
cerr << "Untyped excepcion!!";
return -;
}
}
运行后的结果如下:

至此,官网例子测试通过,才算开始MRPT项目路程了。
(欢迎转载,转载请注明出处。)
MRPT笔记——使用编译好的MRPT库建立VS2013项目的更多相关文章
- [RK3399][Android7.1] 调试笔记 --- 模块编译32位动态库【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/78923784 Platform: RK3399 OS: Android 7.1 Board: ...
- libzip开发笔记(二):libzip库介绍、ubuntu平台编译和工程模板
前言 Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章 ...
- zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板
前言 Qt使用一些压缩解压功能,介绍过libzip库编译,本篇说明zlib库.需要用到zlib的msvc2015x64版本,编译一下. 版本编译引导 zlib在windows上的mingw32 ...
- 高级C/C++编译技术之读书笔记(三)之动态库设计
最近有幸阅读了<高级C/C++编译技术>深受启发,该书深入浅出地讲解了构建过程(编译.链接)中的各种细节,从多个角度展示了程序与库文件或代码的集成方法,提出了面向代码复用和系统集成的软件架 ...
- zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
前言 方便做嵌入式arm的交叉移植zlib库. Zlib库 zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使 ...
- 使用VS2010编译64的Geos库
Geos库在cmake中总是报错,所以我决定试试nmake编译64位的库.现将编译过程记录如下: 1.下载Geos,我下的是最新版3.5.0,地址在 http://trac.osgeo.org/geo ...
- Android APP使用NDK编译后的ffmpeg库出现undefined reference to 'posix_memalign'错误
在android程序中使用NDK编译后的ffmpeg库的时候出现了如下错误: jni/libs/libavutil.a(mem.o): in function av_malloc:libavutil/ ...
- DuiLib学习笔记1——编译运行demo
c++中皮肤问题比较麻烦,MFC自带的太难用.DirectUI界面库就比较强大了,之前像skin++之类的基于DirectUI收费昂贵.DuiLib是基于DirectUI的界面库,可以将用户界面和处理 ...
- VS2010编译链接openssl静态库
最近工作需要使用一些加密算法.之前尝试过cryptopp以及polarssl,听说openssl中的加密模块特别全,并且特别好用.于是想尝试一下. 一.环境配置 下载openssl,我这里使用的是op ...
随机推荐
- div居中方法
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- B/S网站中IE6兼容问题
在HTML中定义的样式,部分样式在IE7以前的版本中的效果是不同的,所以需要在网页中定义让浏览器以IE8的模式启动. 在HEAD中定义标签meta如下: <meta http-equiv=&qu ...
- public protect private. 草稿。
public protect private. 草稿. #include <iostream> #include <thread> #include <memory> ...
- SAP ERP和ORACLE ERP的区别是哪些?
SAP有非常细致深入的标准流程,在流程方面,只要是你想到的问题,SAP都会曾经遇到过并且给出过解决方案.实施SAP比较倾向于改变企业的业务流程来匹配SAP,实现标准化管理. oracle比较灵活,侧重 ...
- Node 编程规范
空格, 2个, 因为有多层函数嵌套 行宽, 80个字符 语句分隔, 一律用; 并且占一行 变量定义, 每一个都要用 var, 并且不要定义全局变量 变量名和属性名, 小驼峰, yourName 函数, ...
- mac office 激活
详见:http://blog.csdn.net/tech4j/article/details/47953311
- go并发
Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据. 以下是我入门的学习笔记. 首先,并行!=并发, 两者是不同的,可 ...
- [SQL] SQL 查出一张表中重复的所有记录
在A表中存在一个字段“AccountId”,而且不同记录之间的“AccountId”值有可能会相同,现在就是需要查询出在该表中的各记录之间,“AccountId”值存在重复的项,这里count记录该字 ...
- 【javascript】作用域和闭包浅析
作用域 分全局作用域和局部作用域 全局作用域:函数外部定义的变量,可以被整个program的各成员参照利用. 局部作用域:函数内部定义的变量,仅供该函数的各成员参照利用. var val=1; //全 ...
- 【Mxnet】----1、使用mxnet训练mnist数据集
使用自己准备的mnist数据集,将0-9的bmp图像分别放到0-9文件夹下,然后用mxnet训练. 1.制作rec数据集 (1).制作list