跳转到内容

UBot Image Frame

C++
UUBotImageFrame
父类
UObject
类型
对象
模块
UBotSensor · UBotSensor 0.1.1
头文件
Source/UBotSensor/Public/UBotImageFrame.h

一次相机采集。图像在 GPU 的 Render Target 里,像素只在调用 Request Pixel Readback 后才读到 CPU,并且只有最新一次采集的帧能读回。

函数 · UUBotImageFrame.ClearCPUPixelData

释放 CPU 上的像素或深度数据。

纯函数 · UUBotImageFrame.CopyDepthValues

返回全部深度的副本,单位 m,按行排列。每次调用都复制整个数组,开销高。

引脚方向类型
Return Value输出Float数组

纯函数 · UUBotImageFrame.CopyPixelBytes

返回全部像素字节的副本,顺序为 B、G、R、A。每次调用都复制整个数组,开销高。

引脚方向类型
Return Value输出Byte数组

纯函数 · UUBotImageFrame.GeneratePointCloud

从已读回的深度生成相机坐标系下的点云(X 前、Y 右、Z 上,单位 m)。只含深度有效的像素,没有强度。

引脚方向类型
Error Message输出String
Return Value输出UBot Point Cloud Frame对象引用

纯函数 · UUBotImageFrame.GetBGRAPixelByCoordinates

读取坐标 (X, Y) 处的像素颜色,原点在左上角。坐标越界、不是 BGRA8 帧或像素还没读回时返回 false。

引脚方向类型默认值
X输入Integer0
Y输入Integer0
Color输出Color结构体
Return Value输出Boolean

纯函数 · UUBotImageFrame.GetDepthMetersByCoordinates

读取坐标 (X, Y) 处的深度,单位 m,0 表示无效。坐标越界、不是深度帧或深度还没读回时返回 false。

引脚方向类型默认值
X输入Integer0
Y输入Integer0
Depth Meters输出Float
Return Value输出Boolean

纯函数 · UUBotImageFrame.GetDepthPreviewTexture

返回最近一次 Update Depth Preview 生成的贴图,还没生成过时为空。

引脚方向类型
Return Value输出Texture 2D对象引用

纯函数 · UUBotImageFrame.GetPixelDataSizeBytes

CPU 上像素数据的字节数,还没读回时为 0。

引脚方向类型
Return Value输出Integer

纯函数 · UUBotImageFrame.HasCPUPixelData

像素或深度是否已经读到 CPU。

引脚方向类型
Return Value输出Boolean

函数 · UUBotImageFrame.RequestPixelReadback

把这一帧的像素读回 CPU。同步执行,开销高;只有最新一次采集的帧能读回,失败原因在 Error Message 里。

引脚方向类型
Error Message输出String
Return Value输出Boolean

函数 · UUBotImageFrame.UpdateDepthPreview

把已读回的深度生成一张预览贴图,无效像素为黑色。预览范围的上限必须大于下限,否则失败;深度还没读回时会先读回。

引脚方向类型默认值
Preview Mode输入EUBot Depth Preview Mode枚举Grayscale
Preview Minimum Depth Meters输入Float0.0
Preview Maximum Depth Meters输入Float0.0
Error Message输出String
Return Value输出Texture 2D对象引用
属性类型默认值说明
CxCx · CameraFloat0.0主点的横坐标,单位像素,等于 (Width - 1) / 2。蓝图只读,Details 不可编辑
CyCy · CameraFloat0.0主点的纵坐标,单位像素,等于 (Height - 1) / 2。蓝图只读,Details 不可编辑
EncodingEncoding · CameraEUBot Image Encoding枚举BGRA8像素编码:BGRA8 或 Depth32FC1。蓝图只读,Details 不可编辑
FxFx · CameraFloat0.0水平焦距,单位像素,等于 Width / (2 * tan(水平视场 / 2))。蓝图只读,Details 不可编辑
FyFy · CameraFloat0.0垂直焦距,单位像素,与 Fx 相同(方形像素)。蓝图只读,Details 不可编辑
HeaderHeader · CameraUBot Frame Header结构体(Status=Error)帧头,含 Valid 和 Status。蓝图只读,Details 不可编辑
HeightHeight · CameraInteger0图像高度,单位像素。蓝图只读,Details 不可编辑
Horizontal Fov RadiansHorizontalFovRadians · CameraFloat0.0水平视场,单位 rad。蓝图只读,Details 不可编辑
Raw Capture Render TargetRawCaptureRenderTarget · CameraTexture Render Target 2D对象引用None这一帧的图像所在的 Render Target。相机再次采集后它的内容会被新的图像覆盖。蓝图只读,Details 不可编辑
Row Stride BytesRowStrideBytes · CameraInteger0每行的字节数,等于 Width 乘以 4。蓝图只读,Details 不可编辑
Sensor Transform WorldSensorTransformWorld · CameraTransform(Rotation=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Translation=(X=0.000000,Y=0.000000,Z=0.000000),Scale3D=(X=1.000000,Y=1.000000,Z=1.000000))采集时传感器在 UE 世界里的变换,位置单位 cm。蓝图只读,Details 不可编辑
Vertical Fov RadiansVerticalFovRadians · CameraFloat0.0垂直视场,单位 rad,由宽高比算出。蓝图只读,Details 不可编辑
WidthWidth · CameraInteger0图像宽度,单位像素。蓝图只读,Details 不可编辑
Capture Group IdCaptureGroupId · Camera|SynchronizationString""所属采集组的 ID,不在采集组里时为空。蓝图只读,Details 不可编辑
Capture SequenceCaptureSequence · Camera|SynchronizationInteger640组序号,从 1 开始,每采集一组加 1,同一次组采集里的所有相机相同。不在采集组里时为 0。蓝图只读,Details 不可编辑
Capture Timestamp SecondsCaptureTimestampSeconds · Camera|SynchronizationFloat (double)0.0采集时间,单位 s。在采集组里是组时间戳,否则等于帧头里的时间戳。蓝图只读,Details 不可编辑
SynchronizedbSynchronized · Camera|SynchronizationBooleanfalse在采集组里采集的帧为 true。蓝图只读,Details 不可编辑