LeapMotion开发(三)--绘制示两个红外摄像头原始图像
来源:互联网 发布:大卫芬奇 知乎 编辑:程序博客网 时间:2024/04/28 14:20
很多时候单单有一组数据出来不是很直观,所以查了一些资料写了把两个红外摄像头采集到的图片显示到一张图上的小demo
关键代码:
ImageList images= frame.images();
需要配置的环境:
1. LeapMotion环境
2. Opencv环境
环境配置参见上一篇博客:
http://blog.csdn.net/zmdsjtu/article/details/52537919
或者:
Opencv环境配置:http://blog.csdn.net/zmdsjtu/article/details/52235056
LeapMotion配置:http://blog.csdn.net/zmdsjtu/article/details/52514270
此外需打开右下角LeapMotion控制面板,将允许图像勾选上
代码如下:
#include "Leap.h"#include "opencv2/opencv.hpp"using namespace Leap;using namespace cv;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) {std::cout << "走就走!!!" << std::endl;}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());//下面是把两张图合并到一张int totalRows = A.rows + B.rows;cv::Mat mergedDescriptors(totalRows, A.cols, A.type());cv::Mat submat = mergedDescriptors.rowRange(0, A.rows);//中间过度的,用以把数据传过去~A.copyTo(submat);submat = mergedDescriptors.rowRange(A.rows, totalRows);B.copyTo(submat);imshow("左右摄像头对比图", mergedDescriptors);//合并到mergedDescriptorswaitKey(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;}
可以看出和普通的摄像头还是有一些区别的,靠得近会显得手指很瘦长,哈哈哈
直观上左右两个输出的图像很近,2333
最后祝大家编程愉快: )
2 0
- LeapMotion开发(三)--绘制示两个红外摄像头原始图像
- LeapMotion开发(二)--Opencv绘制手掌位置
- 图像拼接(三):OpenCV同时打开两个摄像头捕获视频
- C# kinect v2学习笔记(三)红外图像展示
- 近红外摄像头Point-Grey开发日志
- 红外摄像头
- 红外摄像头
- kinect2.0开发笔记(三) 获取红外图
- Kinect V2 开发专题(4)骨骼/深度/红外/摄像头数据获取
- Kinect V2 开发专题(4)骨骼/深度/红外/摄像头数据获取
- Unity leapmotion开发实录(2)
- Unity leapmotion开发实录(3)
- Unity leapmotion开发实录(4)
- LEAPMOTION开发UI专题(1)
- LEAPMOTION开发UI专题(2)
- leapmotion开发(3)实例操作
- IOS开发(79)之绘制图像
- opencv同时开启两个摄像头采集图像
- 超级全的Emoji表情过滤
- MaterialProgressDrawable , 实现SwipeRefreshLayout的下拉效果的旋转动画效果
- 单例模式
- 正义使者——医疗黑客自制Epipen,让普通人获得垄断药
- swift3.0使用AFNetWorking上传头像
- LeapMotion开发(三)--绘制示两个红外摄像头原始图像
- 调试Release发布版程序的Crash错误
- ionic-轻触touch背景幕关闭popup弹出框
- 我谈微信小程序
- android smartpointer
- Nginx安装配置SSL证书并强制http跳转到https
- 50. Pow(x, n)
- JavaWeb配置详解(结合框架SpringMVC)
- Objective-C 中Socket常用转换机制(NSData,NSString,int,Uint8,Uint16,Uint32,byte[])