彩色图像很有用,很有用!!说到图像识别,未来肯定是个大方向!在机器人视觉和一些智能识别在应用很广,而获取下来的数据再加上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之彩色图像数据的更多相关文章

  1. Kinect 骨骼追踪数据的处理方法

    http://www.ituring.com.cn/article/196144 作者/ 吴国斌 博士,PMP,微软亚洲研究院学术合作经理.负责中国高校及科研机构Kinect for Windows学 ...

  2. Kinect 开发 —— 骨骼数据与彩色影像和深度影像的对齐

    在显示彩色影像和深度影像时最好使用WriteableBitmap对象: 要想将骨骼数据影像和深度影像,或者彩色影像叠加到一起,首先要确定深度影像的分辨率和大小,为了方便,这里将深度影像数据和彩色影像数 ...

  3. kinect脸部三维数据特征点标签语义具体说明

    非常多零零碎碎的事情,导致非常久没写blog了.face animation的demo做完了也快一个月了.是时候总结总结了. Kinect获得的标识点共用121个.其给的sdk里面也给出了响应的标签. ...

  4. 如何提取kinect中深度图的点云数据

    https://bbs.csdn.net/topics/391080654 在Matlab中调用Kinect教程:https://jingyan.baidu.com/article/af9f5a2d1 ...

  5. 使用HTML5开发Kinect体感游戏

    一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...

  6. Kinect开发学习笔记之(一)Kinect介绍和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

  7. Kinect的学习笔记发展(一)Kinect引进和应用

    Kinect的学习笔记发展(一)Kinect引进和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

  8. Kinect的学习笔记发展一Kinect引进和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

  9. 利用RGB-D数据进行人体检测 带dataset

    利用RGB-D数据进行人体检测 LucianoSpinello, Kai O. Arras 摘要 人体检测是机器人和智能系统中的重要问题.之前的研究工作使用摄像机和2D或3D测距器.本文中我们提出一种 ...

随机推荐

  1. 安装 log.io 实时监控 php_error 日志

    Log.io 实时监控 php_error.log 日志 开启 php_error 实时监控日志的第一步,要首先开启 php_error 的功能. vi php.ini 修改 PHP 配置文件,将 ; ...

  2. 安卓APP与智能硬件相结合的简易方案

    第1章 概  述 (作者小波QQ463431476) (来源http://blog.chinaaet.com/zhaocundang/p/5100017645博客) (来源   http://www. ...

  3. 使用maven给spring项目打可直接运行的jar包(配置文件内置外置的打法)

    从网上看过许多打jar包的例子,大多是将配置文件打进jar包的.经过本人一番研究,终于搞清楚了怎样将jar包的配置文件外置. 废话不说,直接上spring的pom.xml的配置文件. <proj ...

  4. S5PV210_流水灯

    1.整体思路:把相应的配置数据写入相应的寄存器,控制GPIO电平(Led.s)——运用工程管理Makefile编译.链接文件(由Led.s编译得到led.bin,该文件用于USB启动方式点亮LED,若 ...

  5. Resources.Load加载文件返回null的原因

    1.文件夹都要放在Resources目录下 2.加载时photoName不需要扩展名 Texture2D t = Resources.Load<Texture2D>("Loadi ...

  6. 有理数的稠密性(The rational points are dense on the number axis.)

    每一个实数都能用有理数去逼近到任意精确的程度,这就是有理数的稠密性.The rational points are dense on the number axis.

  7. lombok在IntelliJ IDEA下的使用

    lombok是一款可以精减java代码.提升开发人员生产效率的辅助工具,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码.代码越少,意味着出b ...

  8. FineUI(专业版)v3.0.0 发布,手机、平板和桌面全支持!

    FineUI(专业版)v3.0.0 已经正式发布,全面支持手机.平板和桌面!       自 2008 年 4 月发布第一个版本,我们持续更新了 126 个版本,拥有 16000 多位注册用户,130 ...

  9. Docker实践--部署Nodejs应用

    这个例子的目标是为了向大家展示如何在Docker的container里运行Node.js程序.我会先创建一个简单的Node.js web app,来构建一个镜像.然后基于这个Image运行一个cont ...

  10. SQL Server-5种常见的约束

    引自:http://www.cnblogs.com/dekevin/p/4772235.html SQLServer 中有五种约束, Primary Key 约束. Foreign Key 约束. U ...