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测距器.本文中我们提出一种 ...
随机推荐
- Squirrel: 通用SQL、NoSQL客户端
安装 配置数据库 配置驱动 配置连接 如果你的工作中,需要使用到多个数据库,又不想在多种客户端之间切换来切换去.那么就需要找一款支持多数据库的客户端工具了.如果你要连接多个关系型数据库,你就可以使用N ...
- vi(vim)键盘图及其基本命令
进入vi vi filename 打开或新建文件,并将光标置于第一行首 vi +n filename 打开文件,并将光标置于第 n行首 vi + fi ...
- L2-005. 集合相似度
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAzwAAAIRCAIAAAAA0S/lAAAgAElEQVR4nO3dzass133v//xPNTszDU
- [No0000A0]批处理命令学习之:常用的特殊符号
学习要点:1.>.>>重定向符2.| 命令管道符3.&.&&.|| 组合命令4.^ 转义字符5.% 变量引导符6."" 界定符—————— ...
- canvas贝塞尔曲线 - 1
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvEAAAIcCAIAAADwgGbqAAAgAElEQVR4nOy9a4wb55nn20kOZhq7o8
- 当类型为dynamic的视图模型遭遇匿名对象
当年在ASP.NET MVC 1.0时代我提到,在开发时最好将视图的Model定制为强类型的,这样可以充分利用静态检查功能进行排错.不过有人指出,这么做虽然易于静态检查,但是定义强类型的Model类型 ...
- [LeetCode] Find All Anagrams in a String 找出字符串中所有的变位词
Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ...
- [LeetCode] Coin Change 硬币找零
You are given coins of different denominations and a total amount of money amount. Write a function ...
- 理解OAuth 2.0
转自:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛 ...
- Shell命令_smem
监控各个进程.用户的内存使用情况 基础条件:需要安装yum工具 centos 7.0 1.安装smem [root@VM_31_182_centos src]# yum install smem py ...