已归档 - 采用英特尔® 实感™ 技术的背景替换代码样本

英特尔® 实感™ SDK 已停产。 不再继续提供支持或更新。

下载代码样本

摘要

该代码样本将示范如何使用面向 Windows* 的英特尔® 实感™ SDK 创建实时“绿屏”效果,以捕捉效果增强的自拍照。 SDK 包含用户分割模块,可在每个帧上生成分割的图像,以用来删除或更改用户身后的背景。 该示例应用将展示如何采用用户选择的静态图像替换背景。

Background Replacement Sample

图 1. 用户分割之前和之后

简介

启动后,应用可用固定的绿屏替换用户身后的实际背景。 选择绿色作为初始位图背景颜色是完全随意的。 只需轻点传统的色度键,就可使用合成(或“绿屏”)技术删除照片或视频对象身后的背景。

相比于色度键和 2D 摄像头背景移除技术,用户分割模块采用 3D 摄像头的同步彩色和深度图像流。 与 2D 方法不同,用户的衣服颜色无法与背景一同进行转换,移动背景也无法作为用户的一部分进行转换。

该模块输出 32 位 BGRA 格式的图像,其中包含输入色彩数据和同步阿尔法通道(称为“mask”)。 与背景对应的像素其阿尔法通道为零,与用户对应的像素其阿尔法值大于零。 (请参考 RSSDK_DIR\doc\PDF\sdkmanuals.pdf 中的 SDK 安装手册,了解更多详情。)

该应用包含复选框控制,有助于用户在必要时删除背景图像(请见图 1 中替换之前的图像)。 背景图像选择方法:点击 “Open File” 按钮,将会打开一个对话框,支持用户导航至硬盘中的图像文件 (*.bmp、*.jpg、*.png、*.gif) (图 2)。

Open File Dialog Box

图 2. 打开文件对话框

应用会将选中的背景图像自动缩放到色彩和深度流的像素尺寸 (640x480)。 每个帧上的背景和分割后的图像都可拼接到一起,并在 WPF 图像控制下进行渲染。

点击 “Capture” 按钮,将捕捉快照并以 “MyPic.jpg” 格式保存到输出文件夹(图 3)。

Captured Image

图 3. 捕捉的图像

深度优势

The 英特尔® 实感™ 3D 摄像头 (F200)包含一个 分辨率为 640x480 的 IR 摄像头和一个 1080p RGB 彩色摄像头。 结合 IR 深度和彩色摄像头的数据有利于克服与 2D 摄像头背景移除相关的许多问题,比如动态背景(例如,人物或物体在背景中移动)、阴影,和不同的光照条件。

开发环境

示例应用可采用面向 Windows Desktop 的 Microsoft Visual Studio* Express 2013 或专业版 Visual Studio 2013 构建。

关于代码

代码样本是使用可扩展应用标记语言 (XML) 用 C# 编码的 Windows Desktop 应用,可定义用户界面。 它使用非安全关键字来定义与指针协作的代码部分,以加快图像处理速度(参考 C# 示例网站,了解其他快速图像处理技巧)。

如 MSDN* 非安全代码和指针 C# 编程指南所述,“C# 中的非安全代码并不一定是危险代码;只是 CLR 无法验证其安全性的代码。 因此,如果在完全可信的汇编过程,CLR 仅执行非安全代码。 为使用代码中的非安全关键词,您必须在ProjectPropertiesBuild 下方检查 “Allow unsafe code” 设置。

该项目使用连接 libpxcclr.cs.dll(管理的 DLL)的显式路径:C:\Program Files (x86)\Intel\RSSDK\bin\x64。 如果您的 SDK 安装路径不同,需要更改本参考。 由于我们参考的是 64 位版 DLL,您必须确保 ProjectPropertiesPlatform target 设置下方指定 “x64”。

如欲了解关于如何使用用户分割模块的更多信息,请参考 SDK 安装文档 (RSSDK_DIR\doc\PDF\sdkmanuals.pdf) 和在线背景分割教程

关于英特尔® 实感™ 技术

如要开始使用并了解更多有关面向 Windows 的英特尔实感软件开发套件的信息,请访问:https://software.intel.com/zh-cn/intel-realsense-sdk

关于作者

Bryan Brown 是英特尔开发人员关系部门的一名软件应用工程师。

有关编译器优化的更完整信息,请参阅优化通知