Kinect之彩色图像数据
彩色图像很有用,很有用!!说到图像识别,未来肯定是个大方向!在机器人视觉和一些智能识别在应用很广,而获取下来的数据再加上Opencv就能做出很多很好玩很有趣的功能。这个以后等我进一步成长后再回来慢慢记录。
这里首先要遵循下我在博客里第一篇文章kinect基本认识(http://www.cnblogs.com/carsonche/p/5891517.html)上讲的流程进行源码分析
流程:开始程序-获取kinect摄像机-打开读取器-打开Kinect-获取读取器的相关帧数据-使用帧数据-关闭帧-关闭读取器-关闭Kinect-关闭程序
官方的SDK把获取彩色帧的数据放在了Color source manager,而显示帧的数据放在了Color Source View里。
Color source manager的操作流程:(在源码上做了注释和解析)
u
sing UnityEngine;
using System.Collections;
using Windows.Kinect; public class ColorSourceManager : MonoBehaviour
{
public int ColorWidth { get; private set; }
public int ColorHeight { get; private set; }
public uint BytesPerPixel;
public uint LengthInPixels;
private KinectSensor _Sensor;
private ColorFrameReader _Reader;
private Texture2D _Texture;
private byte[] _Data;
//获取图像
public Texture2D GetColorTexture()
{
return _Texture;
} void Start()
{
//获取传感器
_Sensor = KinectSensor.GetDefault(); if (_Sensor != null)
{
//获取颜色帧读取器
_Reader = _Sensor.ColorFrameSource.OpenReader();
//获取RGBA的彩色帧的分辨率为1920*1080,30帧,每像素
var frameDesc = _Sensor.ColorFrameSource.CreateFrameDescription(ColorImageFormat.Rgba);
ColorWidth = frameDesc.Width;
ColorHeight = frameDesc.Height;
_Texture = new Texture2D(frameDesc.Width, frameDesc.Height, TextureFormat.RGBA32, false);
//定义字节数据大小,大小为没像素字节*像素长度(1920*1080)
_Data = new byte[frameDesc.BytesPerPixel * frameDesc.LengthInPixels];
if (!_Sensor.IsOpen)
{
//若Kinect没有开启,则开启kinect
_Sensor.Open();
}
}
} void Update ()
{
if (_Reader != null)
{
//获取最新的帧
var frame = _Reader.AcquireLatestFrame();
//或存在帧
if (frame != null)
{
//把帧按照RGBA的个数保存在DATA里
frame.CopyConvertedFrameDataToArray(_Data, ColorImageFormat.Rgba);
//把图像按行写入数据
_Texture.LoadRawTextureData(_Data);
//更新图像
_Texture.Apply();
//释放并关闭帧
frame.Dispose();
//帧为空
frame = null;
}
}
} void OnApplicationQuit()
{
//程序关闭时关闭并释放读取器
if (_Reader != null)
{
_Reader.Dispose();
_Reader = null;
}
//程序关闭时关闭kinect
if (_Sensor != null)
{
if (_Sensor.IsOpen)
{
_Sensor.Close();
} _Sensor = null;
}
}
}
从上面可以看到,主要整个类为了一个函数,GetColorTexture()而存在的,主要的操作是先定义各种要的参数(字节数组,图片大小,帧读取器等),然后下面这三行就是核心程序了
从最新的帧里保存在data数组里,并转化赋值给texture。后续可以把图像的所有会用到的函数集合在这个类里,并且进行调用。
图像的显示在unity里很简单,只需要一行代码就行了,
gameObject.GetComponent<Renderer>().material.mainTexture = _ColorManager.GetColorTexture();
将之前获得的图像转给material,这样我们就能获得一个很基本的实时的color图像了。
Kinect之彩色图像数据的更多相关文章
- Kinect 骨骼追踪数据的处理方法
http://www.ituring.com.cn/article/196144 作者/ 吴国斌 博士,PMP,微软亚洲研究院学术合作经理.负责中国高校及科研机构Kinect for Windows学 ...
- Kinect 开发 —— 骨骼数据与彩色影像和深度影像的对齐
在显示彩色影像和深度影像时最好使用WriteableBitmap对象: 要想将骨骼数据影像和深度影像,或者彩色影像叠加到一起,首先要确定深度影像的分辨率和大小,为了方便,这里将深度影像数据和彩色影像数 ...
- kinect脸部三维数据特征点标签语义具体说明
非常多零零碎碎的事情,导致非常久没写blog了.face animation的demo做完了也快一个月了.是时候总结总结了. Kinect获得的标识点共用121个.其给的sdk里面也给出了响应的标签. ...
- 如何提取kinect中深度图的点云数据
https://bbs.csdn.net/topics/391080654 在Matlab中调用Kinect教程:https://jingyan.baidu.com/article/af9f5a2d1 ...
- 使用HTML5开发Kinect体感游戏
一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...
- Kinect开发学习笔记之(一)Kinect介绍和应用
Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
- Kinect的学习笔记发展(一)Kinect引进和应用
Kinect的学习笔记发展(一)Kinect引进和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
- Kinect的学习笔记发展一Kinect引进和应用
Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
- 利用RGB-D数据进行人体检测 带dataset
利用RGB-D数据进行人体检测 LucianoSpinello, Kai O. Arras 摘要 人体检测是机器人和智能系统中的重要问题.之前的研究工作使用摄像机和2D或3D测距器.本文中我们提出一种 ...
随机推荐
- swift-运算符
运算符:+ , - , * , / ,%, ++,-- OC和swiftch除了取模运算符,其他用法都一样 可以检测 //var num:UInt8 = 255 + 1 不可以检测 var num1: ...
- IOS 网络浅析-(十二 UIWebView简介)
在这篇随笔里,我们只要知道UIWebView是什么就可以了. UIWebView 是苹果提供的用来展示网页的UI控件,它也是最占内存的控件. iOS8.0之后出现了webkit框架,WKWebView ...
- 使用GIT进行源码管理 —— 在VisualStudio中使用GIT
GIT作为源码管理的方式现在是越来越流行了,在VisualStudio 2012中,就通过插件的现实对GIT进行了官方支持,并且这个插件在VS2013中已经转正.本文在这里简单的介绍一下如何在Visu ...
- 原创 C++之常量(一)
1概述 一个C++程序就是一系列数据与操作的集合.当一个C++程序开始运行的时候,与该程序相关的数据就会被加载到内存中.当数据与内存发生关联的时候,这些数据就会具有如下的特性: 数据在内存中的地址.这 ...
- ddd 聚合根 之 聚合与不聚合 设计
聚合 不聚合 订单和订单明细 论坛主贴与贴子回复 订单和收货地址(vo)
- 萌新笔记——Cardinality Estimation算法学习(二)(Linear Counting算法、最大似然估计(MLE))
在上篇,我了解了基数的基本概念,现在进入Linear Counting算法的学习. 理解颇浅,还请大神指点! http://blog.codinglabs.org/articles/algorithm ...
- FE
<link rel="stylesheet" type="text/css" media="screen" href="li ...
- 【C++】类和对象(构造与析构)
类 类是一种抽象和封装机制,描述一组具有相同属性和行为的对象,是代码复用的基本单位. 类成员的访问权限 面向对象关键特性之一就是隐藏数据,采用机制就是设置类成员的访问控制权限.类成员有3种访问权限: ...
- C# 闭包问题-你被”坑“过吗?
引言 闭包是什么?以前看面试题的时候才发现这个名词. 闭包在实际项目中会有什么问题?现在就让我们一起来看下这个不太熟悉的名词. 如果在实际工作中用到了匿名函数和lamada表达式,那你就应该高度注意啦 ...
- [LeetCode] Invert Binary Tree 翻转二叉树
Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia: This problem wa ...