z6娱乐

z6娱乐

获取图像数据

本文内容

● 配置并启动设备

● 不变

● 沉Capture中获取Image

● 获取图像数据

● 后续步骤


本页面具体介绍了通过Femto Mega获取深度和彩色图像数据的步骤。。。。。。。 获取图像数据前, ,,,,,,必要先打开设备, ,,,,,,并通过配置开启数据流, ,,,,,,而后就能够获取图像数据。。。。。。。

在配置和获取图像数据之前, ,,,,,,必须查找并打开设备。。。。。。。

你能够参考 streaming sample, 这个例子演示了若何使用本文中描述的函数。。。。。。。

本文将介绍以下函数:

● k4a_device_start_cameras()

● k4a_device_get_capture()

● k4a_capture_get_depth_image()

● k4a_image_get_buffer()

● k4a_image_release()

● k4a_capture_release()

● k4a_device_stop_cameras()



配置并启动设备

Femto Mega  深度相机和彩色相机支持多种模式、分辨率和输出体式。。。。。。。 有关齐全列表, ,,,,,,请参考硬件规格。。。。。。。

流配置是通过 k4a_device_configuration_t 数据结构配置。。。。。。。

k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
config.camera_fps = K4A_FRAMES_PER_SECOND_30;
config.color_format = K4A_IMAGE_FORMAT_COLOR_MJPG;
config.color_resolution = K4A_COLOR_RESOLUTION_2160P;
config.depth_mode = K4A_DEPTH_MODE_NFOV_UNBINNED;
if (K4A_RESULT_SUCCEEDED != k4a_device_start_cameras(device, &config))
{
    printf("Failed to start device\n");
    goto Exit;
}


相机启动后便不休捕获数据, ,,,,,,直到挪用k4a_device_stop_cameras()函数或设备Close。。。。。。。



不变

使用多设备同步职能时, ,,,,,,我们强烈建议使用固定的曝光设置。。。。。。。  若是使用自动曝光, ,,,,,,最多可能必要20 帧!。。。。。 ,,,,,,图像和帧速度能力不变。。。。。。。



从Device中获取Capture对象

开启视频流后, ,,,,,,Capture用来获取图像数据, ,,,,,,每个Capture蕴含深度图像、IR 图像、彩色图像或这些图像的组合。。。。。。。


默认情况下, ,,,,,,API 只会在收到流模式要求的所有图像后才返回捕获。。。。。。。 能够通过将 k4a_device_configuration_t 的 synchronized_images_only 参数配置为 false, ,,,,,,从而将 API 配置为在深度图像或彩色图像可用后, ,,,,,,立即返回仅蕴含这些图像的部门捕获。。。。。。。

// Capture a depth frame
k4a_capture_t capture = NULL;
switch (k4a_device_get_capture(device, &capture, TIMEOUT_IN_MS))
{
case K4A_WAIT_RESULT_SUCCEEDED:
    break;
case K4A_WAIT_RESULT_TIMEOUT:
    printf("Timed out waiting for a capture\n");
    continue;
    break;
case K4A_WAIT_RESULT_FAILED:
    printf("Failed to read a capture\n");
    goto Exit;
}


在 API 成功返回Capture后, ,,,,,,当你用完Capture对象时, ,,,,,,必须挪用 k4a_capture_release()。。。。。。。



从Capture中获取Image

若要获取Capture中蕴含的图像, ,,,,,,请针对分歧的图像类型挪用相应的函数。。。。。。。

● k4a_capture_get_color_image()

● k4a_capture_get_depth_image()

● k4a_capture_get_ir_image()


获取完图像数据后, ,,,,,,必要挪用k4a_image_release()开释k4a_image_t句柄。。。。。。。



获取图像数据

k4a_image_t 提供了获取图像属性的相应函数。。。。。。。

如要获取图像的内存缓冲区, ,,,,,,请使用 k4a_image_get_buffer。。。。。。。

以下示例演示若何从Capture中获取深度图像, ,,,,,,获取IR和彩色图像的步骤类似。。。。。。。 必须将图像类型变量代替为正确的图像类型, ,,,,,,例如 ir 或 color。。。。。。。

// Access the depth16 image
k4a_image_t image = k4a_capture_get_depth_image(capture);
if (image != NULL)
{
    printf(" | Depth16 res:%4dx%4d stride:%5d\n",
            k4a_image_get_height_pixels(image),
            k4a_image_get_width_pixels(image),
            k4a_image_get_stride_bytes(image));
    // Release the image
    k4a_image_release(image);
}
// Release the capture
k4a_capture_release(capture);



后续步骤

既然你已相识若何获取彩色图像和深度图像, ,,,,,,使用 Femto Mega设备。。。。。。。 你还能够:获取IMU数据 和 图像转换

【网站地图】【sitemap】