概述
图像翻转算法将输入图像的镜像版本写入输出图像。它支持沿水平轴、垂直轴和两个轴同时镜像。后者是一种有用且快速的 180 度图像旋转方法。
输入 | VPI_FLIP_HORIZ |
| |
VPI_FLIP_VERT | VPI_FLIP_BOTH |
| |
实现
图像翻转的工作原理是根据用户的需求,跨 x 轴、y 轴或两个轴交换像素。
C API 函数
有关实现该算法的限制、约束和后端列表,请查阅以下函数的参考文档
用法
语言
- 导入 VPI 模块
- 使用 CUDA 后端在输入图像上运行图像翻转。它使用翻转模式 BOTH。输入和输出都是 VPI 图像。
with vpi.Backend.CUDA
output = input.image_flip(vpi.Flip.BOTH)
- 初始化阶段
- 包含定义图像翻转函数的头文件。
- 定义输入图像。
struct VPIImageImpl * VPIImage
图像句柄。
- 创建输出图像。它从输入图像获取其尺寸和格式。
int32_t w, h;
VPIStatus vpiImageGetFormat(VPIImage img, VPIImageFormat *format)
获取图像格式。
VPIStatus vpiImageCreate(int32_t width, int32_t height, VPIImageFormat fmt, uint64_t flags, VPIImage *img)
使用指定的标志创建空的图像实例。
VPIStatus vpiImageGetSize(VPIImage img, int32_t *width, int32_t *height)
以像素为单位获取图像尺寸。
- 创建将在其上提交算法以执行的流。
struct VPIStreamImpl * VPIStream
流的句柄。
VPIStatus vpiStreamCreate(uint64_t flags, VPIStream *stream)
创建流实例。
- 处理阶段
- 使用 CPU 后端将算法连同所有参数提交到流。
VPIStatus vpiSubmitImageFlip(VPIStream stream, uint64_t backend, VPIImage input, VPIImage output, VPIFlipMode flipMode)
水平、垂直或同时翻转二维图像。
- 可选地,等待直到处理完成。
VPIStatus vpiStreamSync(VPIStream stream)
阻塞调用线程,直到此流队列中所有提交的命令都完成(队列为空)。..
- 清理阶段
- 释放流以及输入和输出图像所持有的资源。
void vpiImageDestroy(VPIImage img)
销毁图像实例。
void vpiStreamDestroy(VPIStream stream)
销毁流实例并释放所有硬件资源。
有关更多信息,请参阅 VPI - 视觉编程接口 的“C API 参考”部分中的 图像翻转。
性能
有关如何使用下表性能表的信息,请参阅算法性能表。
在比较测量结果之前,请查阅比较算法运行时间。
有关性能基准测试方式的更多信息,请参阅性能基准。
-