知识库

记录点点滴滴

Leap motion

1.Leap Motion的参数说明及介绍

  • 介绍

Leap Motion是一款体感摄像头,拥有两个红外摄像头和三个红外灯。在SDK中,Leap Motion的帧率可以到60FPS。拥有两个可选模式(桌面模式、头戴模式),常用来开发开发虚拟现实,其中leap motion自带完善的手势算法,也是该相机的一大竞争力。

  • 参数说明

尺寸:80*30*10 mm

质量:约50g

连接口:USB2.0

默认像素:640*240

是否支持同时调用两个内部摄像头:是(无需多线程)

测量范围:官方给出50-400mm  实测:50-2500mm

摄像头类型:双红外摄像头

返回图像类型:8-bit深度图

可用于测量三维精度:???(由于只支持8-bit图?故返回的深度值在0-255区间,无法达到精准三维测量的需求。但是由于其双目的特性,可考虑利用视差进行定位,官方给出的精度在0.01mm)

2.SDK下载及配置

一、下载安装

下载地址https://developer.leapmotion.com/get-started

tip安装的时候记住安装的路径,该安装包无法自定义安装,默认路径为系统盘\Program Files (x86)

点击exe安装完成之后,可以看到右下角状态栏里出现leap motion的小图标,绿色表示连接成功

tip如果出现绿色闪烁,可尝试着右键-观察器,查看有无图像生成。

安装完成之后,也可以尝试着打开SDK里的App Home,可以看到多款demo~

二、环境配置

1.配置系统的环境变量,如下添加

tip:这里要注意,尽管你的电脑是64位的,但由于软件的框架是x86的,所以还是要链接到x86的,同时环境变量配置完成后电脑要注销或重启,相关配置才会生效。

2.配置visual studio(2010,2012,2013)

首先建立空项目

右键项目属性,分别如下配置

至此配置完成

三、打开摄像头代码

#include “Leap.h”

#include <iostream>

// OpenCV Header

#include<opencv2/opencv.hpp>

#include “opencv2/core/core.hpp”

#include “opencv2/highgui/highgui.hpp”

using namespace cv;

using namespace std;

using namespace Leap;

class SampleListener : public Listener {

public:

virtual void onInit(const Controller&);

virtual void onConnect(const Controller&);

virtual void onDisconnect(const Controller&);

virtual void onExit(const Controller&);

virtual void onFrame(const Controller&);

private:

};

void SampleListener::onInit(const Controller& controller) {

std::cout << “初始化完成~” << std::endl;

}

void SampleListener::onConnect(const Controller& controller) {

std::cout << “正在连接” << std::endl;

}

void SampleListener::onDisconnect(const Controller& controller) {

std::cout << “连接失败” << std::endl;

}

void SampleListener::onExit(const Controller& controller) {

}

void SampleListener::onFrame(const Controller& controller) {

const Frame frame = controller.frame();

ImageList images = frame.images();

Mat A;//左侧红外摄像头

Mat B;//右侧

if (images.count() >= 2)

{

A = Mat(images[0].height(), images[0].width(),CV_8UC1, (void *)images[0].data());

B = Mat(images[1].height(), images[1].width(), CV_8UC1, (void *)images[1].data());

imshow(“left”,A);

imshow(“right”, B);

waitKey(1);

}

}

int main(int argc, char** argv) {

SampleListener listener;

Controller controller;

controller.addListener(listener);

controller.setPolicy(Leap::Controller::POLICY_BACKGROUND_FRAMES);

controller.setPolicy(Leap::Controller::POLICY_IMAGES);

std::cout << “输入Enter退出” << std::endl;

std::cin.get();

controller.removeListener(listener);

return 0;

}

点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注