OrbbecSDK2 2.0.2
OrbbecSDK2: New generation Software-Development-Kit for Orbbec 3D-Sensor devices
载入中...
搜索中...
未找到
Public 成员函数 | 静态 Protected 成员函数 | Protected 属性 | 所有成员列表
ob2::image类 参考

相机图像类,是相机图像数据的载体 更多...

#include <OB2Camera.hpp>

Public 成员函数

 image (ob2_camera_type_t source_camera_type, ob2_image_format_t image_format, uint32_t width_pixels, uint32_t height_pixels, uint32_t stride_bytes)
 自定义图像构造 更多...
 
 image (ob2_camera_type_t source_camera_type, ob2_image_format_t image_format, uint32_t width_pixels, uint32_t height_pixels, uint32_t stride_bytes, uint8_t *buffer, uint32_t buffer_size, buffer_release_cb cb)
 从指定 buffer 构造 更多...
 
 image (ob2_image_t &&image_handle)
 通过图像句柄构造(主要用于 capture::get_image更多...
 
 image (image &&img)
 通过其他图像对象构造(移动构造,主要用于派生类的实现) 更多...
 
virtual ~image () noexcept
 图像类析构函数 更多...
 
virtual uint8_t * get_buffer ()
 获取图像 buffer 更多...
 
virtual uint32_t get_size ()
 获取图像数据大小 更多...
 
virtual ob2_image_format_t get_format ()
 获取图像格式 更多...
 
virtual uint32_t get_width_pixels ()
 获取图像宽度 更多...
 
virtual uint32_t get_height_pixels ()
 获取图像高度 更多...
 
virtual uint32_t get_stride_bytes ()
 获取图像行跨度 更多...
 
virtual uint64_t get_device_timestamp_usec ()
 获取设备时间戳 更多...
 
virtual uint64_t get_system_timestamp_usec ()
 获取系统时间戳 更多...
 
virtual ob2_camera_type_t get_source_camera_type ()
 获取图像源相机类型 更多...
 
virtual uint8_t get_available_bits_for_each_pixel ()
 获取图像像素有效位数 更多...
 
virtual float get_value_scale ()
 获取深度图像数值缩放系数 更多...
 
virtual ob2_image_t get_handle ()
 获取图像句柄 更多...
 

静态 Protected 成员函数

static void buffer_release_callback (uint8_t *buffer, void *user_data)
 

Protected 属性

ob2_image_t m_image_handle
 
buffer_release_cb m_buffer_release_cb
 

详细描述

相机图像类,是相机图像数据的载体

在文件 OB2Camera.hpp457 行定义.

构造及析构函数说明

◆ image() [1/4]

ob2::image::image ( ob2_camera_type_t  source_camera_type,
ob2_image_format_t  image_format,
uint32_t  width_pixels,
uint32_t  height_pixels,
uint32_t  stride_bytes 
)
inline

自定义图像构造

SDK 内部会根据图像格式、宽、高、行跨都等信息在内部申请一块合适大小内存的内存

参数
[in]source_camera_type图像原相机类型(用于图像信息追踪,可以填 OB2_CAMERA_UNKNOWN
[in]image_format图像格式
[in]width_pixels图像宽,单位:像素
[in]height_pixels图像高,单位:像素
[in]stride_bytes图像行跨度,单位:字节

在文件 OB2Camera.hpp484 行定义.

◆ image() [2/4]

ob2::image::image ( ob2_camera_type_t  source_camera_type,
ob2_image_format_t  image_format,
uint32_t  width_pixels,
uint32_t  height_pixels,
uint32_t  stride_bytes,
uint8_t *  buffer,
uint32_t  buffer_size,
buffer_release_cb  cb 
)
inline

从指定 buffer 构造

注意
buffer 内存需要有用户提前申请好,并且需要确保内存的大小与图像格式、宽、高、行跨都等条件匹配。
参数
[in]source_camera_type图像原相机类型(用于图像信息追踪,可以填 OB2_CAMERA_UNKNOWN
[in]image_format图像格式
[in]width_pixels图像宽,单位:像素
[in]height_pixels图像高,单位:像素
[in]stride_bytes图像行跨度,单位:字节
[in]bufferbuffer 地址指针
[in]buffer_sizebuffer 内存大小,单位:字节
[in]cbbuffer 释放回调函数,会在 image 释放时调用,用户需要确保该回调函数能够准确释放内存

在文件 OB2Camera.hpp526 行定义.

◆ image() [3/4]

ob2::image::image ( ob2_image_t &&  image_handle)
inline

通过图像句柄构造(主要用于 capture::get_image

参数
image_handle图像句柄

在文件 OB2Camera.hpp550 行定义.

◆ image() [4/4]

ob2::image::image ( image &&  img)
inline

通过其他图像对象构造(移动构造,主要用于派生类的实现)

注意
调用该构造函数后,原图像对象将不再可以访问
参数
img其他图像对象

在文件 OB2Camera.hpp573 行定义.

◆ ~image()

virtual ob2::image::~image ( )
inlinevirtualnoexcept

图像类析构函数

在文件 OB2Camera.hpp589 行定义.

成员函数说明

◆ get_buffer()

virtual uint8_t * ob2::image::get_buffer ( )
inlinevirtual

获取图像 buffer

图像 buffer 内放的即是图像的数据,用户可以通过返回的 buffer 指针直接读取或修改图像数据

注意
在图像对象被析构后,不要再对 buffer 指向内存进行访问,否则会出现意想不到的问题
返回
uint8_t* buffer 地址指针

在文件 OB2Camera.hpp617 行定义.

◆ get_size()

virtual uint32_t ob2::image::get_size ( )
inlinevirtual

获取图像数据大小

通常图像的数据大小会与 buffer 内存大小一致,但是对于压缩或者编码格式图像,图像数据数据大小会小于 buffer 大小。 不过 buffer 大小对用户是没有啥实际意义的,所以可以不用理会

返回
uint8_t* 图像数据大小,单位:字节

在文件 OB2Camera.hpp643 行定义.

◆ get_format()

virtual ob2_image_format_t ob2::image::get_format ( )
inlinevirtual

获取图像格式

图像格式代表着图像像素的排列方式、压缩、编码等特性,用户需要根据图像格式决定如何使用图像数据

返回
ob2_image_format_t 返回图像格式

在文件 OB2Camera.hpp666 行定义.

◆ get_width_pixels()

virtual uint32_t ob2::image::get_width_pixels ( )
inlinevirtual

获取图像宽度

返回
uint32_t 返回图像宽度,单位:像素

在文件 OB2Camera.hpp688 行定义.

◆ get_height_pixels()

virtual uint32_t ob2::image::get_height_pixels ( )
inlinevirtual

获取图像高度

返回
uint32_t 返回图像高度,单位:像素

在文件 OB2Camera.hpp710 行定义.

◆ get_stride_bytes()

virtual uint32_t ob2::image::get_stride_bytes ( )
inlinevirtual

获取图像行跨度

用户可以通过行跨度大小,对 buffer 地址指针进行偏移,从而快速获取图像指定坐标下的像素数据

注意
stride_bytes 与 width_pixels 不一定是倍数关系,因为某些条件下,可能会往图像每一行尾部数据填充一些已实现内存对齐
非像素平铺格式(MJPG、H264、H265、RLE、COMPRESSED 等)的图像没有 stride_bytes 概念,调用本接口会抛出 std::runtime_error 异常
返回
uint32_t 返回图像行跨度,单位:字节

在文件 OB2Camera.hpp742 行定义.

◆ get_device_timestamp_usec()

virtual uint64_t ob2::image::get_device_timestamp_usec ( )
inlinevirtual

获取设备时间戳

设备实间戳是指图像在设备端打上的时间戳,这个时间戳最接近图像生成时的时间

注意
默认情况下,这个时间戳是指设备从启动开始过去的时间长度,设备重启后会归零重计。设备定时计数器溢出后会归零重计。
由于设备时钟精度关系,虽然设备时间戳单位为微秒,但是某些设备的设备精度其实是毫秒,所以在数值上低三位会为零。
并不是所有设备都支持设备时间戳返回,并且由于 Windows 系统限定,需要完成一些特殊系统配置获取到时间戳 (可通过管理员 权限运行 OrbbecViewer 工具自动完成配置)。
返回
uint64_t 返回设备时间戳,单位:微秒

在文件 OB2Camera.hpp778 行定义.

◆ get_system_timestamp_usec()

virtual uint64_t ob2::image::get_system_timestamp_usec ( )
inlinevirtual

获取系统时间戳

系统时间戳是指 Host 端 SDK 接收到图像数据时打的时间戳(Host 的 localtime,是从 1970-01-01T00:00:00Z. 开始的计时)

返回
uint64_t 返回系统时间戳,单位:微秒

在文件 OB2Camera.hpp803 行定义.

◆ get_source_camera_type()

virtual ob2_camera_type_t ob2::image::get_source_camera_type ( )
inlinevirtual

获取图像源相机类型

通过 SDK 获取得到的图像都会填写源相机类型,代表了图像数据来源

返回
ob2_camera_type_t 相机类型

在文件 OB2Camera.hpp827 行定义.

◆ get_available_bits_for_each_pixel()

virtual uint8_t ob2::image::get_available_bits_for_each_pixel ( )
inlinevirtual

获取图像像素有效位数

对于 Depth 和 IR 图像,通常其图像像素只有低位有效,高位固定为零。(比如某相机深度是 Y16 格式的图像,其像素位数为 16, 但是只有低 14 位有效,高两位为零,此时调用本接口将返回 14)

返回
uint8_t 返回图像像素有效位数

在文件 OB2Camera.hpp854 行定义.

◆ get_value_scale()

virtual float ob2::image::get_value_scale ( )
inlinevirtual

获取深度图像数值缩放系数

深度图像像素值意义为目标物体到相机的距离,单位为 mm。但是,由于相机特性、算法处理等原因,实际图像的数值可能会被缩放。 本接口返回用于将图像数据恢复为以毫米为单位的数值时所需要缩放的系数, 比如,scale=0.1 时, 某坐标下像素值为 pixel_value=10000, 则表示深度距离 value = pixel_Value*scale = 10000*0.1=1000mm。

注意
仅深度图像有效,非深度图像调用本接口将会抛出 std::runtime_error 异常
返回
uint8_t 返回深度图数值缩放系数

在文件 OB2Camera.hpp887 行定义.

◆ get_handle()

virtual ob2_image_t ob2::image::get_handle ( )
inlinevirtual

获取图像句柄

注意
获取句柄不会增加句柄引用计数,其生命周期还是由图像对象管理,即通图像析构后会释放句柄
返回
ob2_image_t 返回图像句柄

在文件 OB2Camera.hpp914 行定义.

◆ buffer_release_callback()

static void ob2::image::buffer_release_callback ( uint8_t *  buffer,
void *  user_data 
)
inlinestaticprotected

在文件 OB2Camera.hpp919 行定义.

被这些函数引用 image().

类成员变量说明

◆ m_image_handle

ob2_image_t ob2::image::m_image_handle
protected

◆ m_buffer_release_cb

buffer_release_cb ob2::image::m_buffer_release_cb
protected

在文件 OB2Camera.hpp926 行定义.

被这些函数引用 image().


该类的文档由以下文件生成: