使用Kinect 2.0 进行视频的录制代码。

#include <Kinect.h>
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <string>
#include "videoGet\videoprocessor.h"using   namespace   std;
using   namespace   cv;int main(void)
{IKinectSensor   * mySensor = nullptr;GetDefaultKinectSensor(&mySensor);  //获取感应器mySensor->Open();           //打开感应器double time0 = static_cast<double>(getTickCount());IDepthFrameSource   * mySource = nullptr;   //取得深度数据mySensor->get_DepthFrameSource(&mySource);int height = 0, width = 0;IFrameDescription   * myDescription = nullptr;  //取得深度数据的分辨率mySource->get_FrameDescription(&myDescription);myDescription->get_Height(&height);myDescription->get_Width(&width);myDescription->Release();IDepthFrameReader   * myReader = nullptr;mySource->OpenReader(&myReader);    //打开深度数据的ReaderIDepthFrame * myFrame = nullptr;Mat temp(height, width, CV_16UC1);    //建立图像矩阵Mat img(height, width, CV_8UC1);IKinectSensor   * mySensor1 = nullptr;           //第1步打开SensorGetDefaultKinectSensor(&mySensor1);mySensor1->Open();IColorFrameSource   * mySource1 = nullptr;       //第2步获取SourcemySensor1->get_ColorFrameSource(&mySource1);int     height1 = 0, width1 = 0;                  //取得宽和高等下用IFrameDescription   * myDescription1 = nullptr;mySource1->get_FrameDescription(&myDescription1);myDescription1->get_Height(&height1);myDescription1->get_Width(&width1);IColorFrameReader   * myReader1 = nullptr;       //第3步打开ReadermySource1->OpenReader(&myReader1);Mat img1(height1, width1, CV_8UC4);IColorFrame     * myFrame1 = nullptr;double rate = 30;std::cout << "Frame rate: " << rate << "fps" << std::endl;int delay = 1000 / rate;long long i = 0;std::string b = "depth";std::string ext = ".bmp";std::string b1 = "color";cv::VideoWriter write;write.open("color.avi", CV_FOURCC('M', 'J', 'P', 'G'), 15.0, Size(512, 424));
//  VideoProcessor processor;while (1){
//      double time0 = static_cast<double>(getTickCount());//第4步获取Frameif ((myReader->AcquireLatestFrame(&myFrame) == S_OK) && (myReader1->AcquireLatestFrame(&myFrame1) == S_OK))//通过Reader尝试获取最新的一帧深度数据,放入深度帧中,并判断是否成功获取{myFrame->CopyFrameDataToArray(height * width, (UINT16 *)temp.data); //先把数据存入16位的图像矩阵中temp.convertTo(img, CV_8UC1, 255.0 / 4500);   //再把16位转换为8位imshow("TEST", img);UINT    size1 = 0;myFrame1->CopyConvertedFrameDataToArray(width1 * height1 * 4, (BYTE *)img1.data, ColorImageFormat_Bgra);imshow("TEST", img1);std::string name(b);std::ostringstream ss; ss << i; name += ss.str(); //i++;name += ext;std::cout << name << std::endl;std::string name1(b1);std::ostringstream ss1; ss1 << i; name1 += ss1.str(); i++;name1 += ext;std::cout << name1 << std::endl;//            cv::imwrite(name, img);if (cv::waitKey(delay) >= 0)return 0;write << img1;/*VideoProcessor processor;processor.setDelay(1000. / 30.0);processor.setOutput("depth.avi", -1, 30);
//          cv::Mat frame = img.clone();processor.run();*/write.open("depth.avi", CV_FOURCC('M', 'J', 'P', 'G'), 30.0,Size(512,424));//write.write(img);write << img;myFrame->Release();myFrame1->Release();}else{
//          cout << "It cannot get a new  image!!!" << "\n" << endl;}if (waitKey(30) == VK_ESCAPE)break;}myReader->Release();        //释放不用的变量并且关闭感应器mySource->Release();mySensor->Close();mySensor->Release();

 myReader1->Release();        //释放不用的变量并且关闭感应器mySource1->Release();mySensor1->Close();mySensor1->Release();
return 0;}

使用Kinect V2进行录制视频相关推荐

  1. 【计算机视觉】深度相机(六)--Kinect v2.0 手势样本库制作

    目录为1.如何使用Kinect Studio录制手势剪辑:2.如何使用Visual Gesture Builder创建手势项目:3.如何在我的C#程序中使用手势:4.关于录制.剪辑手势过程中的注意事项 ...

  2. 深度相机(六)--Kinect v2.0 手势样本库制作

    目录为1.如何使用Kinect Studio录制手势剪辑:2.如何使用Visual Gesture Builder创建手势项目:3.如何在我的C#程序中使用手势:4.关于录制.剪辑手势过程中的注意事项 ...

  3. 深度相机(五)--Kinect v2.0

    原文:http://blog.csdn.net/qq1175421841/article/details/50412994 ----微软Build2012大会:Kinect for Windows P ...

  4. Kinect v2 Examples with-SDK 提示 技巧和示例简介

    原帖:https://rfilkov.com/2015/01/25/kinect-v2-tips-tricks-examples/#t26 所有在KinectScripts文件夹中管理的目的是什么: ...

  5. Kinect v2保存图像和深度图序列

    上班后的端午节就意味着多一天的假期!!! 本工作的主要出发点是录制数据集,用来供后续的建图和bug重现. 软硬件配置 环境配置如下: 系统:Ubuntu 16.04 LTS  64位 CPU: Int ...

  6. 使用pykinect2+pyqt5开发kinect v2采集程序

    介绍 PyKinect2是一个将kinect api转化成python的程序,作者提供了例程,github地址,pyqt5是python版的QT,主要用来开发界面,本文利用两者开发kinect v2采 ...

  7. xbox录制视频没声音_如何在Xbox One上截图和录制视频

    xbox录制视频没声音 Microsoft's Xbox One allows you to easily capture a screenshot or record the last thirty ...

  8. iOS三种录制视频方式详细对比

    先附上参考资料 http://www.jianshu.com/p/16cb14f53933 https://developer.apple.com/library/content/samplecode ...

  9. ubuntu 16.04 ROS + kinect v2 安装

    参考: ubuntu 16.04 ROS + kinect v2 driver安装方法:安装驱动时遇到的问题及解决方法(1) 以下为参考链接部分内容以及我安装过程中的操作 安装libfreenect2 ...

最新文章

  1. Linuxshell之高级Shell脚本编程-创建函数
  2. php中调行高代码_单元格行高怎么设置
  3. 程序兵法:Java String 源码的排序算法(一)
  4. Cropper – 简单的 jQuery 图片裁剪插件
  5. mybatis xml文件 id冲突错误 findUserIDById is ambiguous in Mapped Statements collection
  6. web应用转化为saas多租户
  7. 再见!公司的烂系统……
  8. 编程c语言被windows拦截,C语言调用detours劫持WindowsAPI
  9. 程序员写博客如何赚钱「5大盈利方向」
  10. 电力电子课设日志(已完结)
  11. python实现ncm转mp3_滚动歌词制作 之 ncm格式转mp3
  12. 总结1_1:常用周期函数
  13. 二进制数的加法步骤解析
  14. codevs2069 油画 — 动态维护优先队列
  15. oracle虚拟机共享U盘,技巧分享:虚拟机也能使用U盘及USB设备
  16. matlab 导出图片坐标_Matlab绘图---坐标系显示设置
  17. java中的字符串常量池_java字符串常量池
  18. 面试官:说说你对keep-alive的理解是什么?怎么缓存当前的组件?缓存后怎么更新?
  19. HTML+CSS网页设计期末课程大作——体育足球(5页面)
  20. sudo apt-get update 报错 ubuntu xenial InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)解决

热门文章

  1. matlab电流源,matlabPSB元件1、ACCurrentSource交流电流源(理想电源)Peak.doc
  2. servlet登录验证并返回错误信息
  3. 冒泡排序及其三种写法
  4. node ref char*_「 volute 」树莓派+Node.js造一个有灵魂的语音助手
  5. Project 2016 中文版软件快捷键学习
  6. Xdebug中文文档-基础特性
  7. 从照片中读取经纬度信息
  8. 博世传感器调试笔记(一)----加速度传感器BMA253
  9. plc串口通讯 qt_Qt 编写串口调试助手
  10. RS-485电路设计及接口防护