适用于深度和追踪摄像头的英特尔实感 SDK 2.0

Skip to content

英特尔® 实感™ SDK 2.0

借助跨平台开源英特尔® 实感™ SDK 2.0,可以轻松构建未来的深度应用。

稳定版: v2.38.1 | 源代码 | 预发布版: v2.37.0

其他操作系统?下载 Windows 7 版、Linux 版或参见以下版本。

英特尔实感 SDK 2.0 是跨平台和独立于操作系统的。除了上述平台以外,我们还提供 Jetson TX2Raspberry Pi 3macOS 的安装指南。

支持的平台和语言

支持的平台和语言

代码样本

借助我们的代码示例和教程,快速启动您的项目。

'rs-hello-realsense' 示例演示了连接至英特尔实感设备并通过在相机视场中心打印到对象的距离来利用深度数据的基础。

代码
预览
#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API

// Create a Pipeline - this serves as a top-level API for streaming and processing frames
rs2::pipeline p;

// Configure and start the pipeline
p.start();

// Block program until frames arrive
rs2::frameset frames = p.wait_for_frames();

// Try to get a frame of a depth image
rs2::depth_frame depth = frames.get_depth_frame();

// Get the depth frame's dimensions
float width = depth.get_width();
float height = depth.get_height();

// Query the distance from the camera to the object in the center of the image
float dist_to_center = depth.get_distance(width / 2, height / 2);

// Print the distance
std::cout << "The camera is facing an object " << dist_to_center << " meters away \r";

此示例演示了如何配置相机以将深度和 RGB 数据流传输和渲染到屏幕。我们使用 OpenGL 进行跨平台渲染,使用 GLFW 进行窗口管理。对于 OpenCV 用户,我们有一个 imshow 替代方案。

代码
预览
#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API

#include "example.hpp"          // Include a short list of convenience functions for rendering

// Create a simple OpenGL window for rendering:
window app(1280, 720, "RealSense Capture Example");

// Declare depth colorizer for enhanced color visualization of depth data
rs2::colorizer color_map; 

// Declare rates printer for showing streaming rates of the enabled streams.
rs2::rates_printer printer;

// Declare the RealSense pipeline, encapsulating the actual device and sensors
rs2::pipeline pipe;

// Start streaming with default recommended configuration
// The default video configuration contains Depth and Color streams
// If a device is capable to stream IMU data, both Gyro and Accelerometer are enabled by default 
pipe.start(); 

rs2::frameset data = pipe.wait_for_frames().    // Wait for next set of frames from the camera
                     apply_filter(printer).     // Print each enabled stream frame rate
                     apply_filter(color_map);   // Find and colorize the depth data
                     
    
// Show method, when applied on frameset, break it to frames and upload each frame into a gl textures
// Each texture is displayed on different viewport according to it's stream unique id
app.show(data);

该示例演示了使用 Dlib 的机器学习算法进行的非常简单的人脸特征点检测,该算法使用深度数据实现基本的反欺骗。这只是一个示例,旨在展示可能的应用程序。此处使用的启发式方法非常简单和基本,可以在很大程度上进行改进。

代码
预览
// Enable usage of librealsense frame data as a dlib image
rs_frame_image< dlib::rgb_pixel, RS2_FORMAT_RGB8 > image( color_frame );

// 1. Faces are detected in two steps:
// Facial boundary rectangles are detected:
  dlib::frontal_face_detector face_bbox_detector = dlib::get_frontal_face_detector();
  ...
  std::vector< dlib::rectangle > face_bboxes = face_bbox_detector( image );

// 2. Each one is then annotated to find its landmarks:
  dlib::shape_predictor face_landmark_annotator;
  dlib::deserialize( "shape_predictor_68_face_landmarks.dat" ) >> face_landmark_annotator;
  ...
  std::vector< dlib::full_object_detection > faces;
  for( auto const & bbox : face_bboxes )
    faces.push_back( face_landmark_annotator( image, bbox ));

if( nose_depth >= eye_depth ) return false;
if( eye_depth - nose_depth > 0.07f ) return false;
if( ear_depth <= eye_depth ) return false;
if( mouth_depth <= nose_depth ) return false;
if( mouth_depth > chin_depth ) return false;

// All the distances, collectively, should not span a range that makes no sense. 
// F.e. if the face accounts for more than 20cm of depth, or less than 2cm, then something's not valid
float x = std::max( { nose_depth, eye_depth, ear_depth, mouth_depth, chin_depth } );
float n = std::min( { nose_depth, eye_depth, ear_depth, mouth_depth, chin_depth } );
if( x - n > 0.20f ) return false;
if( x - n < 0.02f ) return false;

// Align depth and color frames
rs2::align align_to_color( RS2_STREAM_COLOR );
...
rs2::frameset data = pipe.wait_for_frames();
data = align_to_color.process( data );       // Replace with aligned frames

工具

SDK 工具可帮助您使用深度摄像头的功能。

英特尔® 实感™ 查看器

快速访问英特尔实感深度摄像头,以查看深度流、可视化点云、记录和播放流、配置摄像头设置等等。

深度质量工具

测试摄像头的深度质量,其中包括:平面拟合的标准误差、归一化均方根、子像素精度、距离精度和填充率。

了解最新动态

通过提交此表单,您确认您年满 18 周岁,并且同意让英特尔通过营销相关的电子邮件或通过电话联系您。您可以随时取消订阅。英特尔网站和通信内容遵循我们的隐私声明使用条款

与销售人员交谈

让我们来谈谈英特尔实感深度传感摄像头如何增强您的解决方案。

Scroll To Top

了解最新动态

了解最新的英特尔® 实感™ 技术:产品更新、即将发布的公告和活动。

提交此表单,即表示您确认自己已经年满 18 周岁,同意就此业务请求与英特尔分享您的个人信息。您还同意通过电子邮件和电话订阅来随时了解最新英特尔技术和行业趋势。您可以随时取消订阅。英特尔的网站和通讯受隐私声明使用条款的制约。