使用Kinect V2进行录制视频
使用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进行录制视频相关推荐
- 【计算机视觉】深度相机(六)--Kinect v2.0 手势样本库制作
目录为1.如何使用Kinect Studio录制手势剪辑:2.如何使用Visual Gesture Builder创建手势项目:3.如何在我的C#程序中使用手势:4.关于录制.剪辑手势过程中的注意事项 ...
- 深度相机(六)--Kinect v2.0 手势样本库制作
目录为1.如何使用Kinect Studio录制手势剪辑:2.如何使用Visual Gesture Builder创建手势项目:3.如何在我的C#程序中使用手势:4.关于录制.剪辑手势过程中的注意事项 ...
- 深度相机(五)--Kinect v2.0
原文:http://blog.csdn.net/qq1175421841/article/details/50412994 ----微软Build2012大会:Kinect for Windows P ...
- Kinect v2 Examples with-SDK 提示 技巧和示例简介
原帖:https://rfilkov.com/2015/01/25/kinect-v2-tips-tricks-examples/#t26 所有在KinectScripts文件夹中管理的目的是什么: ...
- Kinect v2保存图像和深度图序列
上班后的端午节就意味着多一天的假期!!! 本工作的主要出发点是录制数据集,用来供后续的建图和bug重现. 软硬件配置 环境配置如下: 系统:Ubuntu 16.04 LTS 64位 CPU: Int ...
- 使用pykinect2+pyqt5开发kinect v2采集程序
介绍 PyKinect2是一个将kinect api转化成python的程序,作者提供了例程,github地址,pyqt5是python版的QT,主要用来开发界面,本文利用两者开发kinect v2采 ...
- xbox录制视频没声音_如何在Xbox One上截图和录制视频
xbox录制视频没声音 Microsoft's Xbox One allows you to easily capture a screenshot or record the last thirty ...
- iOS三种录制视频方式详细对比
先附上参考资料 http://www.jianshu.com/p/16cb14f53933 https://developer.apple.com/library/content/samplecode ...
- ubuntu 16.04 ROS + kinect v2 安装
参考: ubuntu 16.04 ROS + kinect v2 driver安装方法:安装驱动时遇到的问题及解决方法(1) 以下为参考链接部分内容以及我安装过程中的操作 安装libfreenect2 ...
最新文章
- Linuxshell之高级Shell脚本编程-创建函数
- php中调行高代码_单元格行高怎么设置
- 程序兵法:Java String 源码的排序算法(一)
- Cropper – 简单的 jQuery 图片裁剪插件
- mybatis xml文件 id冲突错误 findUserIDById is ambiguous in Mapped Statements collection
- web应用转化为saas多租户
- 再见!公司的烂系统……
- 编程c语言被windows拦截,C语言调用detours劫持WindowsAPI
- 程序员写博客如何赚钱「5大盈利方向」
- 电力电子课设日志(已完结)
- python实现ncm转mp3_滚动歌词制作 之 ncm格式转mp3
- 总结1_1:常用周期函数
- 二进制数的加法步骤解析
- codevs2069 油画 — 动态维护优先队列
- oracle虚拟机共享U盘,技巧分享:虚拟机也能使用U盘及USB设备
- matlab 导出图片坐标_Matlab绘图---坐标系显示设置
- java中的字符串常量池_java字符串常量池
- 面试官:说说你对keep-alive的理解是什么?怎么缓存当前的组件?缓存后怎么更新?
- HTML+CSS网页设计期末课程大作——体育足球(5页面)
- sudo apt-get update 报错 ubuntu xenial InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)解决