OpenVX对象:图像结构
OpenVX对象:图像结构
定义 Image Object 接口。
数据结构
宏
类型定义
枚举
功能
5.8.1. 数据结构 vx_imagepatch_addressing_t
寻址图像补丁结构,仅由主机用于寻址图像补丁中的像素。结构的字段定义为:
typedef struct _vx_imagepatch_addressing_t {
vx_uint32 dim_x;
vx_uint32 dim_y;
vx_int32 stride_x;
vx_int32 stride_y;
vx_uint32 scale_x;
vx_uint32 scale_y;
vx_uint32 step_x;
vx_uint16 step_y;
vx_uint16 stride_x_bits;
} vx_imagepatch_addressing_t;
dim_x、dim_y - 图像在x&y方向上的尺寸(以逻辑像素为单位)。
stride_x,stride_y - 在正x或y方向上,从一个逻辑像素到下一个逻辑相邻像素的物理字节距离。
说明
如果数据类型包含在一个整数字节中,则stride_x必须等于该数据类型所表示的字节数(例如,对于VX_DF_IMAGE_U16,stride_x必须仅为2)。
scale_x,scale_y - 从主平面(通常为零索引平面)到该平面的缩放关系。整数下缩放因子f应设置为等于scale=unity/f的值,整数上缩放因子f则应设置为scale=unity×f的值。unity定义为VX_scale_unity。
step_x、step_y - 步长是为了达到下一个物理上唯一的像素,而跳过的逻辑像素单元的数量。例如,在一个维度中缩放一半的平面上,该维度中的步长为2,表示该维度中每隔一个像素就是一个别名。这在需要对唯一像素进行迭代的情况下很有用,例如在序列化或反序列化图像补丁信息时。
stride_x_bits - 从一个逻辑像素到正x方向上,下一个逻辑相邻像素的物理位距离。此字段仅在x方向上的步幅,不是整数字节时使用(例如,对于VX_DF_IMAGE_U1图像)。
说明
对于VX_DF_IMAGE_U1图像,定义为stride_x==0,因为它小于一个字节。图像中第一个字节中的最低有效位(位数0)是左上角最左边的像素,即origo。VX_DF_IMAGE_U1映像总是从字节边界开始,并且每行都有一个stride_y,它是整个字节的倍数,这意味着每行的末尾可能存在未定义值的填充位。图像补丁只能以八个像素的倍数访问:指向图像数据的指针总是指向一组八个像素。单个像素访问也因此而不同:每个字节(8个像素的组)都可以用位掩码1<<(x%8)进行掩码,以获得单个像素值(移位x次)。有关VX_DF_Image_U1图像上像素寻址的示例,请参见图像访问示例。
参阅: vxMapImagePatch
vx_pixel_value_t
描述任何图像格式的像素值的并集。使用与图像格式对应的字段。
typedef union _vx_pixel_value_t {
vx_uint8 RGB[3];
vx_uint8 RGBX[4];
vx_uint8 YUV[3];
vx_bool U1;
vx_uint8 U8;
vx_uint16 U16;
vx_int16 S16;
vx_uint32 U32;
vx_int32 S32;
vx_uint8 reserved[;
} vx_pixel_value_t;
RGB - 按 R、G、B 顺序排列的VX_DF_IMAGE_RGB格式
RGBX - 按 R、G、B、X 顺序排列的VX_DF_IMAGE_RGBX格式
YUV - 按 Y、U、V 顺序排列的所有 YUV 格式
U1 -VX_DF_IMAGE_U1
U8 -VX_DF_IMAGE_U8
U16 -VX_DF_IMAGE_U16
S16 -VX_DF_IMAGE_S16
U32 -VX_DF_IMAGE_U32
S32 -VX_DF_IMAGE_S32
保留 - 未使用
5.8.2. 宏 VX_IMAGEPATCH_ADDR_INIT
用于初始化堆栈上的vx_imagepatch_addressing_t结构。
#define VX_IMAGEPATCH_ADDR_INIT {0u, 0u, 0, 0, 0u, 0u, 0u, 0u, 0u}
5.8.3. 类型定义 vx_image
对图像的不透明引用。
typedef struct _vx_image *vx_image;
参阅: vxCreateImage
vx_map_id
保存映射/取消映射函数返回映射标识符的变量的地址。
typedef uintptr_t vx_map_id;
5.8.4. 枚举 vx_channel_range_e
VX_image的VX_image_range属性使用的图像通道范围列表。
enum vx_channel_range_e {
VX_CHANNEL_RANGE_FULL = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_COLOR_RANGE) + 0x0,
VX_CHANNEL_RANGE_RESTRICTED = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_COLOR_RANGE) + 0x1,
};
枚举器
VX_CHANNEL_RANGE_FULL- 全系列通道的单位。
VX_CHANNEL_RANGE_RESTRICTED- 基于给定空间的通道单位的限制范围。
vx_color_space_e
VX_image的VX_image_space属性使用的图像颜色空间列表。
enum vx_color_space_e {
VX_COLOR_SPACE_NONE = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_COLOR_SPACE) + 0x0,
VX_COLOR_SPACE_BT601_525 = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_COLOR_SPACE) + 0x1,
VX_COLOR_SPACE_BT601_625 = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_COLOR_SPACE) + 0x2,
VX_COLOR_SPACE_BT709 = VX_ENUM_BASE(VX_ID_KHRONOS, VX_ENUM_COLOR_SPACE) + 0x3,
VX_COLOR_SPACE_DEFAULT = VX_COLOR_SPACE_BT709,
};
枚举器
VX_COLOR_SPACE_NONE- 用于表示否 使用色彩空间。
VX_COLOR_SPACE_BT601_525- 用于 表示 BT.601 系数和 SMPTE C 初级用于 转换。
VX_COLOR_SPACE_BT601_625- 用于 表示 BT.601 系数和 BTU 原色用于 转换。
VX_COLOR_SPACE_BT709- 用于表示 BT.709系数用于转换。
VX_COLOR_SPACE_DEFAULT- VX中的所有图像 默认为 BT.709。
vx_image_attribute_e
图像属性列表。
enum vx_image_attribute_e {
VX_IMAGE_WIDTH = VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_IMAGE) + 0x0,
VX_IMAGE_HEIGHT = VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_IMAGE) + 0x1,
VX_IMAGE_FORMAT = VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_IMAGE) + 0x2,
VX_IMAGE_PLANES = VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_IMAGE) + 0x3,
VX_IMAGE_SPACE = VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_IMAGE) + 0x4,
VX_IMAGE_RANGE = VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_IMAGE) + 0x5,
VX_IMAGE_MEMORY_TYPE = VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_IMAGE) + 0x7,
VX_IMAGE_IS_UNIFORM = VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_IMAGE) + 0x8,
VX_IMAGE_UNIFORM_VALUE = VX_ATTRIBUTE_BASE(VX_ID_KHRONOS, VX_TYPE_IMAGE) + 0x9,
};
枚举器
VX_IMAGE_WIDTH- 查询图像的宽度。只读 . 使用参数。vx_uint32
VX_IMAGE_HEIGHT- 查询图像的高度。只读 . 使用参数。05]vx_uint32
VX_IMAGE_FORMAT- 查询图像的格式。只读 . 使用参数。vx_df_image
VX_IMAGE_PLANES- 查询图像的编号 的飞机. 只读 . 使用参数。vx_size
VX_IMAGE_SPACE- 查询图像的颜色 空格(见)。读写 . 使用参数。vx_color_space_evx_enum
VX_IMAGE_RANGE- 查询图像的频道 范围 (见 )。只读 . 使用参数。vx_channel_range_evx_enum
VX_IMAGE_MEMORY_TYPE- 查询内存类型,如果 使用 vxCreateImageFromHandle 创建。如果不是使用 vxCreateImageFromHandle 创建的,则返回。使用参数。vx_imageVX_MEMORY_TYPE_NONE15]vx_memory_type_e
VX_IMAGE_IS_UNIFORM- 查询图像是否 制服. 只读 . 使用参数。vx_bool
VX_IMAGE_UNIFORM_VALUE- 查询图像 统一值(如果有)。只读 . 使用参数。vx_pixel_value_t
vx_map_flag_e
映射/取消映射操作枚举。
enum vx_map_flag_e {
VX_NOGAP_X = 1,
};
枚举器
VX_NOGAP_X- 没有间隙。
5.8.5. 函数 vxCopyImagePatch
允许应用程序从图像对象复制矩形块/复制到图像对象中 飞机.
vx_status vxCopyImagePatch(
vx_image image,
const vx_rectangle_t* image_rect,
vx_uint32 image_plane_index,
const vx_imagepatch_addressing_t* user_addr,
void* user_ptr,
vx_enum usage,
vx_enum user_mem_type);
参数
[in] image - 对作为源或 副本的目标。
[in] image_rect - 图像面片的坐标。补丁必须在图像的边界内。(start_x,start_y) 给出了内部左上角像素的坐标 补丁,而 (end_x,end_y) 给出了 下角元素。必须为 0 ≤<图像中像素数≤开始结束 大小。
[in] image_plane_index - 图像对象的平面索引 修补程序副本的源或目标。
[in] user_addr - 描述布局的结构的地址 user_ptr 所指向的用户内存位置。在结构中,只需要提供 dim_x、dim_y、stride_x 和 stride_y 字段,其他字段被函数忽略。用户内存的布局必须遵循行主顺序:stride_x = 像素大小(以字节为单位),stride_y≥ stride_x * dim_x。
[in] user_ptr - 存储内存位置的地址 如果副本是在读取模式下请求的,则请求的数据,或者从何处请求 获取要存储到 Image 对象中的数据(如果请求了副本) 在写入模式下。可访问的内存必须足够大,以包含指定的 具有指定布局的修补程序:可访问内存(以字节为单位≥ (end_y - start_y) * stride_y。
[in] 用法 - 这声明了副本对 Image 对象使用枚举。对于统一图像,仅支持。对于其他图像,只有 和 是 支持:vx_accessor_eVX_READ_ONLYVX_READ_ONLYVX_WRITE_ONLY
VX_READ_ONLY表示将数据从图像对象复制到 应用程序内存。
VX_WRITE_ONLY表示将数据复制到 Image 对象中 从应用程序内存中。
[in] user_mem_type - 一个枚举 指定 user_addr 所引用的内存的内存类型。vx_memory_type_e
返回:枚举。vx_status_e
返回值
VX_SUCCESS- 没有错误,任何其他值都表示失败。
VX_ERROR_OPTIMIZED_AWAY- 这是对虚拟图像的引用 应用程序无法访问。
VX_ERROR_INVALID_REFERENCE- 图片不是有效的参考。vx_image
VX_ERROR_INVALID_PARAMETERS- 其他参数不正确。
人工智能芯片与自动驾驶