Leap Motion C++ 开发笔记(二) 打开摄像头
2017-09-02 20:29
351 查看
代码部分
主要使用了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 <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; }
实现效果
右下图可以看出,左右两个红外摄像头区别还是很明显的相关文章推荐
- Leap Motion C++开发笔记(一)下载安装及环境配置
- Leap Motion C++开发笔记(三)获取深度值及距离估算
- 嵌入式开发之C++基础学习笔记1--综合比较HelloWorld示例
- 使用Carbide.C++2.3开发Symbian应用程序 笔记一
- 嵌入式开发之C++基础学习笔记4--面向对象封装继承多态
- Ubuntu 操作系统学习笔记之c/c++开发环境配置
- C++ 开发过程中遇到的sizeof使用笔记
- Jetson TX1开发笔记(六):V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示
- C++开发人脸性别识别教程(15)——搭建MFC框架启动摄像头
- iOS RTMP 视频直播开发笔记(1)----- 采集摄像头图像
- VC2010 + C++ + OpenCV 项目开发环境搭建 —— OpenCV 无法打开包括文件 找不到头文件问题
- 使用C++开发Leap Motion应用程序——Windows下开发环境配置
- VxWorks 6.9 内核编程指导之读书笔记 -- C++开发
- 51CTO C开发频道中笔记之二(C/C++中的指针的应用及注意问题)
- C++学习笔记-后台服务程序开发模式
- cocos2dx3.0 C++开发 零基础入门笔记
- STM32F0开发笔记6: 在Keil中使用C++进行程序设计
- C++Directx11开发笔记三:绘制图形
- C++开发笔记
- 使用unity3D开发同时打开手机前后摄像头实例程序