定义了 VPIWarpMap 对象及相关函数。 更多...
数据结构 | |
结构体 | VPIWarpGrid |
保存 VPI 的扭曲网格定义。 更多... | |
结构体 | VPIWarpMap |
定义了输入和输出图像像素之间的映射。 更多... | |
函数 | |
VPIStatus | vpiWarpMapAllocData (VPIWarpMap *warpMap) |
为给定的扭曲网格分配扭曲映射的控制点数组。 更多... | |
void | vpiWarpMapFreeData (VPIWarpMap *warpMap) |
释放由 vpiWarpMapAllocData 分配的扭曲映射控制点。 更多... | |
VPIStatus | vpiWarpMapGenerateIdentity (VPIWarpMap *warpMap) |
使用单位映射填充给定的扭曲映射。 更多... | |
#define | VPI_WARPGRID_MAX_HORIZ_REGIONS_COUNT 4 |
扭曲网格中水平区域的最大数量。 | |
#define | VPI_WARPGRID_MAX_VERT_REGIONS_COUNT 4 |
扭曲网格中垂直区域的最大数量。 | |
#define | VPI_WARPGRID_MIN_REGION_WIDTH 64 |
最小扭曲网格区域宽度。 | |
#define | VPI_WARPGRID_MIN_REGION_HEIGHT 16 |
最小扭曲网格区域高度。 | |
定义了 VPIWarpMap 对象及相关函数。
扭曲映射保存从输出图像到输入图像的映射,用于 Remap 算法。 它允许密集和稀疏映射。
struct VPIWarpGrid |
保存 VPI 的扭曲网格定义。
此结构定义了重映射操作目标图像中控制点的布局。
控制点用作从源图像到目标图像进行几何变换的基础。 其余点基于插值进行变换。 因此,控制点的密度控制了几何变换的质量。
这是定义图像中区域的示例
这是在一个区域中定义控制点的示例
这是一个 WxH 密集网格定义的示例
regionWidth[0]
到 regionWidth[numHorizRegions-2]
必须对齐到 VPI_WARPGRID_MIN_REGION_WIDTH 并且至少为 VPI_WARPGRID_MIN_REGION_WIDTH。regionWidth[numHorizRegions-1]
必须至少为 VPI_WARPGRID_MIN_REGION_WIDTH。regionHeight[0]
到 regionHeight[numVertRegions-2]
必须对齐到 VPI_WARPGRID_MIN_REGION_HEIGHT 并且至少为 VPI_WARPGRID_MIN_REGION_HEIGHT。regionHeight[numVertRegions-1]
必须至少为 VPI_WARPGRID_MIN_REGION_HEIGHT。定义位于文件 WarpGrid.h 的 156 行。
数据字段 | ||
---|---|---|
int8_t | numHorizRegions | 水平区域的数量。 |
int8_t | numVertRegions | 垂直区域的数量。 |
int16_t | regionWidth[VPI_WARPGRID_MAX_HORIZ_REGIONS_COUNT] | 每个区域的宽度。 |
int16_t | regionHeight[VPI_WARPGRID_MAX_VERT_REGIONS_COUNT] | 每个区域的高度。 |
int16_t | horizInterval[VPI_WARPGRID_MAX_HORIZ_REGIONS_COUNT] | 给定区域内控制点之间的水平间距。
|
int16_t | vertInterval[VPI_WARPGRID_MAX_VERT_REGIONS_COUNT] | 给定区域内控制点之间的垂直间距。
|
struct VPIWarpMap |
定义了输入和输出图像像素之间的映射。
此结构用作 Remap 的输入。 它定义了输入图像中的控制点位置。 输出图像中的相应位置由扭曲网格定义隐式定义。
数据字段 | ||
---|---|---|
VPIWarpGrid | grid | 扭曲网格控制点结构定义。 它隐式定义了输出图像中的控制点位置。 |
int16_t | numHorizPoints | 水平点的数量。
|
int16_t | numVertPoints | 垂直点的数量。
|
int32_t | pitchBytes | 一个控制点与其正下方控制点之间的字节数。
|
VPIKeypointF32 * | keypoints | 指向数组的指针,该数组包含输入图像中与输出图像中控制点位置相对应的控制点位置。 坐标是绝对的,(0,0) 是输出图像的左上角。 |
VPIStatus vpiWarpMapAllocData | ( | VPIWarpMap * | warpMap | ) |
#include <vpi/WarpMap.h>
为给定的扭曲网格分配扭曲映射的控制点数组。
此函数将读取扭曲网格结构并分配适当大小的控制点数组,填充 VPIWarpMap 的 numHorizPoints、numVertPoints、strideBytes 和 keypoints 属性。 当不再需要时,扭曲映射必须由 vpiWarpMapFreeData 释放。
[in,out] | warpMap | 将要分配其关键点数组的扭曲映射。
|
VPI_ERROR_INVALID_ARGUMENT | warpMap 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | 生成 warpMap 的参数无效。 |
VPI_SUCCESS | 操作执行成功。 |
void vpiWarpMapFreeData | ( | VPIWarpMap * | warpMap | ) |
#include <vpi/WarpMap.h>
释放由 vpiWarpMapAllocData 分配的扭曲映射控制点。
如果控制点数组为 NULL,则此函数不执行任何操作。 它将 numHorizPoints
、numVertPoints
和 strideBytes
设置为零,并将 keypoints
设置为 NULL。
[in,out] | warpMap | 需要释放其控制点数组的扭曲映射。 |
VPI_ERROR_INVALID_ARGUMENT | warpMap 为 NULL。 |
VPIStatus vpiWarpMapGenerateIdentity | ( | VPIWarpMap * | warpMap | ) |
#include <vpi/WarpMap.h>
使用单位映射填充给定的扭曲映射。
如果用户想要指定自己的映射,此函数很有用。 它将控制点坐标设置为由扭曲网格隐式定义的目标坐标。 然后,用户可以遍历这些点并对每个点应用自定义映射函数。
[in,out] | warpMap | 具有已分配控制点数组的扭曲映射,将使用单位映射填充。
|
VPI_ERROR_INVALID_ARGUMENT | warpMap 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | warpMap 未分配。 |
VPI_SUCCESS | 操作执行成功。 |