简介
该 C#/XAML 代码示例展示了如何使用面向 Windows 的英特尔® 实感™ SDK* 中的面部追踪算法借助 R200 摄像头实时检测和追踪人们的面部。 该代码示例具有以下功能:
- 以 Image 控制的形式显示 R200 RGB 摄像头的实时色彩数据流
- 添加可追踪用户面部(基于场景中用户的外貌)的矩形控制
- 显示 R200 摄像头检测的面部数量
- 显示追踪到的面部的高度和宽度
- 用 2D 坐标图(x 轴和 y 轴)显示追踪到的面部
- 显示面部深度,以及与 R200 摄像头之间的距离
- 启用和显示告警监控,并订阅告警事件处理程序
软件开发环境
该代码示例使用 Microsoft Visual Studio Community 2015 在 Windows® 10 RTM 上创建而成。 用于该示例的项目模板为Visual C#– Windows– Classic Desktop。
用于该项目的 SDK 和 DCM 版本分别为:
- 英特尔® 实感™ SDK v6.0.21.6598
- 英特尔® 实感™ 景深摄像头管理器 R200 v2.0.3.39488
硬件概览
开展这项开发工作时,我们将英特尔® 实感™ 开发人员套件 (R200)用于摄像头,该摄像头借助可选磁性支架连接至标准三脚架(图 2)。
(**并非所有套件均提供该支架。)
运行 R200 代码示例时需满足以下基本硬件要求:
- 第四代英特尔® 酷睿™ 处理器或更高版本
- 150 MB 可用硬盘空间
- 4GB RAM
- 英特尔® 实感™ 摄像头 (R200)
- 面向 R200 摄像头(或专门用于连接集成摄像头)的可用 USB3 端口
重要说明: 要求 USB3 接口支持摄像头所需的带宽。 该接口必须连接至客户端系统的专用 USB3 端口(不使用集线器)。
构建注意事项
- 该项目使用 System.Drawing.Imaging 命名空间。在新项目中手动引用该命名空间的做法是:在 Solution Explorer 中右击 References,然后选择 Add Reference…打开窗口。 接下来选择Assemblies, Framework并搜索 System.Drawing列表。 突出显示复选框,然后点击 OK按钮。
- 该项目使用至 libpxcclr.cs.dll (管理的 DLL)的显式路径,地址为: C:\Program Files (x86)\Intel\RSSDK\bin\x64。 如果您采用的是不同的 SDK 安装路径,引用时需要进行更改。
- 由于该项目引用 64 位版本的 DLL,因此您必须确保在 Project→ Properties→ Platform target设置下注明 “x64”。
- 该项目包含后期生成事件指令,以确保非托管 DLL (libpxccpp2c.dll) 能够复制到输出对象目录:
if "$(Platform)" == "x86" (copy /y "$(RSSDK_DIR)\bin\win32\libpxccpp2c.dll""$(TargetDir)" ) else ( copy /y "$(RSSDK_DIR)\bin\x64\libpxccpp2c.dll""$(TargetDir)" )
关于代码
该代码示例的结构为:
- 配置会话、SenseManager 界面和面部模块。
- 启动名为 Update的 worker 线程,AcquireFrame-ReleaseFrame循环在该线程内处理。
- AcquireFrame-ReleaseFrame循环内进行着以下活动:
- 获取图像数据。
- 获取面部模块数据。
- 调用渲染方法来更新 UI。
- 释放资源。
- 释放帧。
- 渲染方法中所进行的活动包括:
- 调用 ConvertBitmap 方法将位图帧转换成 BitmapImage 类型,在 WPF Image 控制中显示帧时需要进行此类转换。
- 通过将工作委托给与 UI 线程相关的派送程序来更新 UI。
- ShutDown方法在激发 Window_Closing或 btnExit_Click事件时调用。 ShutDown方法中所进行的活动包括:
- 停止 Update 线程。
- 处理对象。
立即查看
请点击下载链接,了解与该示例相关的代码和实验。
关于英特尔® 实感™ 技术
如要开始使用,了解更多有关面向 Windows 的英特尔实感软件开发套件的信息,请访问:https://software.intel.com/zh-cn/intel-realsense-sdk.
关于作者
Bryan Brown 是英特尔开发人员关系部门的软件应用工程师。