博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leap Motion C++ 开发笔记(二) 打开摄像头
阅读量:2441 次
发布时间:2019-05-10

本文共 2133 字,大约阅读时间需要 7 分钟。

代码部分

主要使用了SDK中的frame.images()获取图像

遗憾的是,获取的图像仅为8位

摘自官方文档的说明:

If a 32-bit-per-component texture format is not available on your target platform, you can use a separate texture for the x and y lookup values and encode the floating point values into multiple 8-bit color components. You then have to decode the values before using them to look up the raw brightness values.

也就是说Leap Motion并不能像Kinect那样通过像素点得到精确的深度信息值

#include "Leap.h"  #include 
// OpenCV Header #include
#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;}

实现效果

右下图可以看出,左右两个红外摄像头区别还是很明显的

这里写图片描述

你可能感兴趣的文章
机器学习&深度学习入门历程
查看>>
LTP(Linux Test Project)学习(一)——LTP介绍
查看>>
LTP(Linux Test Project)学习(三)——LTP目录介绍
查看>>
DirtyCow CVE-2016-5195分析
查看>>
caffe编译报错解决记录
查看>>
LTP(Linux Test Project)学习(七)——LTP提交补丁
查看>>
Linux 4.0亮点特性
查看>>
Linux 4.1亮点特性
查看>>
Linux 4.4亮点特性
查看>>
Linux 4.5 亮点特性
查看>>
Makefile开发工具学习小结
查看>>
学习linux0.11内核代码——引导启动程序setup.s
查看>>
决策树
查看>>
CGI
查看>>
csv文件
查看>>
XML CDATA
查看>>
转义字符
查看>>
TIOBE开发语言排行榜
查看>>
分区和卷
查看>>
换行符
查看>>