使用EmguCV处理Kinect数据流
2015-09-15 12:31
555 查看
一、OpenCV与EmguCV等相关简介
搞计算机视觉方面的人肯定都知道OpenCV——Intel公司在1999年发起的一个项目,它将一些高级的视觉研究成果加入到OpenCV库中并开源贡献给了全世界。其本身使用C/C++写的,不过对于那些习惯了用C#的人来说,直接用OpenCV的话可能不放便。不过幸好,2008年,一个名为Willow Garage的科技孵化公司负责对该项目的更新和维护。几乎同时EmguCV项目开始发起,他提供了对OpenCV的.Net包装,使得我们在.Net环境下能够使用OpenCV库中的函数。
既然EmguCV这么好用,那么我们如何才能将其用到Kinect中,用来处理Kinect的数据流(本文主要指彩色数据)呢????
幸好,有人已帮我们写好了二者的接口函数,如参考资料7、8(来源自4)所示,7、8可能翻墙才能下载下来,9是我自己根据5、6整理的。
二、EmguCV在Kinect中的使用
开始本小节的前提是:
1)已能够熟练获取Kinect的彩色数据流;
2)已准备好参考资料7、8两个接口函数。
1、将类“ImageExtemsion.cs”和“EmguImageExtension.cs”添加到你的工程中去。
2、在你的源码中添加命名空间的引用:
using ImageManipulationExtensionMethods;
3、开始使用EmguCV
private void kinectSensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { using (ColorImageFrame colorImageFrame = e.OpenColorImageFrame()) { if (colorImageFrame != null) { /* //*********************使用Kinect的函数显示彩色数据流************************ //1、用来存储彩色像素的数组(BGRA BGRA BGRA BGRA BGRA) colorPixelData = new byte[colorImageFrame.PixelDataLength]; //2、把彩色数据帧中的彩色像素复制到:colorPixelData colorImageFrame.CopyPixelDataTo(colorPixelData); //3、将彩色像素数据赋给画布上Name=ColorName的Image元素 ColorName.Source = BitmapSource.Create(colorImageFrame.Width, colorImageFrame.Height, 96, 96, PixelFormats.Bgr32, null, colorPixelData, colorImageFrame.Width * 4); */ //*********************使用EmguCV处理Kinect彩色数据流************************** //1、将彩色数据帧(colorImageFrame)转化为EmguCV可以处理的数据类型(Image<Bgr, byte>) Image<Bgr, byte> image = colorImageFrame.ToOpenCVImage<Bgr, byte>(); //2、彩色图像转为灰色图像 Image<Gray,byte> grayImage = image.Convert<Gray,byte>(); //3、Sobel边缘检测 CvInvoke.Sobel(grayImage, grayImage, DepthType.Cv8U, 1, 0); //4、调用函数进行类型转化 ColorName.Source = grayImage.ToBitmapSource(); } } }
三、运行结果
原彩色图像
Sobel边缘检测后的图像
因为时间关系,上述两个运行结果我是分别获取的。当然,我们也可以把两幅图像放到一个界面上。
说明:如果上述有啥疑问也可参考资料4!
参考资料:
1、OpenCV官网
2、OpenCV中文论坛
3、EmguCV官网
4、[EmguCV/KinectSDK] WPF使用EmguCV讀取KinectSDK做影像處理
5、[译]Kinect for Windows SDK开发入门(十五):进阶指引 上](/article/4778037.html)
6、[译]Kinect for Windows SDK开发入门(十五):进阶指引 下](/article/4778038.html)
7、ImageExtemsion.cs
8、EmguImageExtension.cs
9、EmguCV与Kinect 函数接口
相关文章推荐
- RNN模型
- iOS生成服务器端的推送证书
- 我对栈的学习
- Qt 学习之路 :进程间通信
- Android技术知识网址集合
- 检查硬盘告警的脚本
- 教练式辅导-GROW模型的分析与运用
- 完美激活Flash builder 4.7
- sql:[dbo].[smt_MES_RptProductDaily] 生产日报表
- ICE
- 个人面试题(oracle数据库开发)(一)
- LBP+DLBP+STLBP+VLBP
- 输入输出之File类
- 降维工具箱
- 2014年度辛星完全解读html部分
- IOS开发-CAlayer-锚点小结
- cocos2dx画扇形
- 红黑树
- 简单的数据库交互展示
- 概率分析和随机算法(2)——算法导论(6)