GRT是一个基于C++开发的手势识别库,包含了大量常用的机器学习算法,定义了pipline结构,允许算法pipline中表示为模块,将一个模块的输出直接作用于下一个模块的输入,非常方便轻松快速地进行分类或回归实验和开发。笔者在接触之前是一个完全没用过C++的小白,过程中遇到不少问题,查阅资料过程中花费了大量时间,在此记录下来,希望能帮助到有需要的朋友。
![](http://www.nickgillian.com/archive/wiki/grt/tutorials/GettingStarted/GestureRecognitionPipelineImage_01.jpg)
准备工作:
GIThub
下载地址:https://github.com/nickgillian/grt
同时需要使用CMAKE进行编译
CMake下载地址 : https://cmake.org/download/
选择Binary distributions(二进制发行版),根据电脑配置下载解压。
并将...\bin\路径 添加进环境变量 的Path(目的是为了让系统调用cmake.exe,不会请百度添加环境变量)
如笔者路径:D:\DownLoad\cmake-3.11.0-rc2-win64-x64\cmake-3.11.0-rc2-win64-x64\bin
编译工作:
在...\grt-master\build中再新建一个文件夹 temp用于存放编译后的大量项目文件 (首先确保build文件夹内有CMakeLists.txt这个文件)
通过CMD 命令行 转入到 temp 文件夹路径下
控制行命令: cd /d e: (盘符先转到E盘)
cd E:\DownLoad\grt-master\grt-master\build\ temp (转移路径到该文件夹下)
cmake .. (注意有cmake后有一个空格,.. 含义是为了在上一级目录下读取CMakeLists并在temp文件夹内编译执行)
cmake提示完成后 temp文件夹内就有了大量项目文件,打开ALL_BUILD 项目文件(笔者使用vs2013)
选择ALL_BUILD 右键 ——> 生成 (注意这里Debug 和Release要各做一遍,不然默认Debug 不做Release,后续无法使用Release)
等待生成解决方案。结束后会有大量报错和警告,不用理会,这些都来自于example和test部分,不影响实际上核心函数的使用
只要生成了grt.dll和grt.lib文件就足够了 动态库和静态库是我们调用的关键,路径在
...\build\ temp
\Debug\
项目配置:
新建一个项目,选择 win32 控制台应用,笔者命名为grtTutorial
模式:Debug (
Release同理,唯一需要注意的是需要在All_BUILD 中编译好两个版本
)
1.
添加调用所需.h头文件:
将GRT.h文件添加在头文件目录下:选择“头文件" -----右键 -----添加-----现有项------GRT.h
GRT.h 路径位于.../grt-master/grt文件夹下
同时在“项目
->属性->配置属性->C/C++->常规->附加包含目录”中加入头文件的路径
2.
添加编译所需要(依赖)的 lib 文件:
在“项目->属性->配置属性->连接器->输入->附加依赖项”里填写 grt.lib
3.
添加库(libs)文件目录:
在“项目->属性->配置属性->连接器->常规->附加库目录”
添加grt.lib文件所在路径
...\build\ temp
\Debug\
然后在源文件夹下新建一个CPP文件,输入下面一段代码
#include <GRT.h>
#include <iostream>
using namespace GRT;
using namespace std;
int main(int argc, const char * argv[])
{
//Print the GRT version
cout << "GRT Version: " << GRTBase::getGRTVersion() << endl;
return EXIT_SUCCESS;
}
4.
将grt.dll 文件复制到Debug文件夹下。(注意是sln 文件同级路径下的Debug与Release文件夹里,和.exe文件放在一起)尝试会出现如下错误
5. 根据现在报错的位置将已经过时的方法修改,如loadModelFromFile 直接改成load 修改完毕后再次运行(注意一定要release和debug都编译过以后再修改代码,不然会编译失败)
实验完成就可以开始写自己的代码了!