与 OpenCV 库的互操作性。 更多...
函数 | |
VPIStatus | vpiImageCreateWrapperOpenCVMat (const cv::Mat &mat, VPIImageFormat fmt, uint64_t flags, VPIImage *img) |
使用给定的图像格式将 cv::Mat 封装到 VPIImage 中。 更多... | |
VPIStatus | vpiImageCreateWrapperOpenCVMat (const cv::Mat &mat, uint64_t flags, VPIImage *img) |
将 cv::Mat 封装到 VPIImage 中,并从其类型推断图像格式。 更多... | |
VPIStatus | vpiImageSetWrappedOpenCVMat (VPIImage img, const cv::Mat &mat) |
重新定义现有 VPIImage 封装器的封装 cv::Mat 。 更多... | |
VPIStatus | vpiImageCreateWrapperOpenCVMatPlanes (const std::vector< cv::Mat > &matPlanes, VPIImageFormat fmt, uint64_t flags, VPIImage *img) |
将 cv::Mat 向量封装到 VPIImage 中,每个 cv::Mat 代表一个图像平面。 更多... | |
VPIStatus | vpiImageSetWrappedOpenCVMatPlanes (VPIImage img, const std::vector< cv::Mat > &matPlanes) |
用新的平面替换封装的 cv::Mat 平面。 更多... | |
VPIStatus | vpiImageDataExportOpenCVMat (const VPIImageData &imgData, cv::Mat *mat) |
使用来自锁定 VPIImage 的 VPIImageData 中的数据填充现有的 cv::Mat 。 更多... | |
VPIStatus | vpiImageDataExportOpenCVMatPlanes (const VPIImageData &imgData, std::vector< cv::Mat > *matPlanes) |
使用来自 VPIImageData 的所有平面填充 cv::Mat 向量。 更多... | |
VPIStatus | vpiImageDataImportOpenCVMat (const cv::Mat &mat, VPIImageData *imgData) |
使用给定的 cv::Mat 中的数据填充现有的 VPIImageData。 更多... | |
VPIStatus | vpiImageDataImportOpenCVMat (const cv::Mat &mat, VPIImageFormat fmt, VPIImageData *imgData) |
使用给定的 cv::Mat 中的数据填充现有的 VPIImageData,强制使用给定的图像格式。 更多... | |
VPIStatus | vpiImageDataImportOpenCVMatPlanes (const std::vector< cv::Mat > &matPlanes, VPIImageFormat fmt, VPIImageData *imgData) |
使用描述给定 VPIImageData 中所有平面的 cv::Mat 向量填充,强制使用给定的图像格式。 更多... | |
与 OpenCV 库的互操作性。
VPI 允许与 OpenCV 轻松互操作。这使得将现有的 cv::Mat
对象封装到 VPIImage 中以在 VPI 管道中使用变得容易。
也可以从 VPIImageData 创建 cv::Mat
。
|
inline |
#include <vpi/OpenCVInterop.hpp>
使用给定的图像格式将 cv::Mat
封装到 VPIImage 中。
它还封装了 cv::cvtColor
理解的 4:2:2 (packed and semi-planar) 和 4:2:0 (semi-planar) 格式的 YUV 图像。
当 VPIImage 仍在封装 cv::Mat
时,不得销毁 cv::Mat
。 否则会导致未定义的行为。
[输入] | mat | 要封装的 OpenCV 矩阵。
|
[输入] | fmt | 与 mat 关联的图像格式。
|
[输入] | flags | 指定图像所需特性的位字段。 VPI_BACKEND_CPU 标志始终在内部添加。
|
[输出] | img | 指向将接收创建的图像句柄的内存的指针。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | fmt 无效或与 mat 不一致。 |
VPI_ERROR_INVALID_ARGUMENT | mat 为空或具有错误的维度数。 |
VPI_ERROR_INVALID_ARGUMENT | 输出 img 为 NULL。 |
VPI_ERROR_OUT_OF_MEMORY | 没有足够的资源来创建图像。 |
VPI_ERROR_INVALID_CONTEXT | 当前上下文已销毁。 |
VPI_ERROR_INVALID_OPERATION | 请求的后端在当前上下文中未启用。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 117 行,文件 OpenCVInterop.hpp。
|
inline |
#include <vpi/OpenCVInterop.hpp>
将 cv::Mat
封装到 VPIImage 中,并从其类型推断图像格式。
推断图像类型的规则是
当 VPIImage 仍在封装 cv::Mat
时,不得销毁 cv::Mat
。 否则会导致未定义的行为。
[输入] | mat | 要封装的 OpenCV 矩阵。
|
[输入] | flags | 指定图像所需特性的位字段。 VPI_BACKEND_CPU 标志始终在内部添加。
|
[输出] | img | 指向将接收创建的图像句柄的内存的指针。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | 不支持 mat 类型。 |
VPI_ERROR_INVALID_ARGUMENT | mat 为空或具有错误的维度数。 |
VPI_ERROR_INVALID_ARGUMENT | 输出 img 为 NULL。 |
VPI_ERROR_OUT_OF_MEMORY | 没有足够的资源来创建图像。 |
VPI_ERROR_INVALID_CONTEXT | 当前上下文已销毁。 |
VPI_ERROR_INVALID_OPERATION | 请求的后端在当前上下文中未启用。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 166 行,文件 OpenCVInterop.hpp。
#include <vpi/OpenCVInterop.hpp>
重新定义现有 VPIImage 封装器的封装 cv::Mat
。
新的 cv::Mat
必须具有与正在封装的现有 cv::Mat
相同的特性(类型和维度)。
此操作是高效的,不会分配内存。 封装的内存将可供封装器创建期间指定的相同后端访问。
封装的 cv::Mat
在仍然被封装时必须有效。
[输入] | img | 图像句柄。
|
[输入] | mat | 要封装的 cv::Mat 对象。
|
VPI_ERROR_INVALID_ARGUMENT | mat 为空或具有错误的维度数。 |
VPI_ERROR_INVALID_ARGUMENT | 输出 img 为 NULL。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | 不支持 mat 类型。 |
VPI_ERROR_INVALID_OPERATION | mat 的维度和/或格式与 img 不匹配。 |
VPI_ERROR_INVALID_OPERATION | img 已锁定。 |
VPI_ERROR_INVALID_OPERATION | img 不是由 vpiImageCreateWrapperOpenCVMat 或 vpiImageCreateWrapper 使用正确的缓冲区类型创建的。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 207 行,文件 OpenCVInterop.hpp。
|
inline |
#include <vpi/OpenCVInterop.hpp>
将 cv::Mat
向量封装到 VPIImage 中,每个 cv::Mat
代表一个图像平面。
当 VPIImage 仍在封装它时,不得销毁封装的 cv::Mat
。 不使用 std::vector
对象本身,因此可以销毁它,甚至可以是临时的。 未能保持 cv::Mat
分配会导致未定义的行为。
[输入] | matPlanes | cv::Mat 向量,每个向量代表一个图像平面。
|
[输入] | fmt | 与 matPlanes 关联的图像格式。
|
[输入] | flags | 指定图像所需特性的位字段。 VPI_BACKEND_CPU 标志始终在内部添加。
|
[输出] | img | 指向将接收创建的图像句柄的内存的指针。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | 不支持 fmt 。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | matPlanes 类型与 fmt 不一致。 |
VPI_ERROR_INVALID_ARGUMENT | matPlanes 中的某些 cv::Mat 为空,或者 matPlanes 为空。 |
VPI_ERROR_INVALID_OPERATION | 请求的后端在当前上下文中未启用。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 263 行,文件 OpenCVInterop.hpp。
|
inline |
#include <vpi/OpenCVInterop.hpp>
用新的平面替换封装的 cv::Mat
平面。
新的 cv::Mat
向量必须具有相同的大小,并且包含的 cv::Mat
必须具有与正在封装的现有 cv::Mat
相同的特性(类型和维度)。
VPIImage 必须由 vpiImageCreateWrapperOpenCVMatPlanes 创建。
此操作是高效的,不会分配内存。 封装的内存将可供封装器创建期间指定的相同后端访问。
封装的 cv::Mat
在仍然被封装时必须有效。 std::vector
对象本身可以销毁,甚至可以是临时的。
[输入] | img | 图像句柄。 |
[输入] | matPlanes | cv::Mat 向量,每个向量代表一个图像平面。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | 不支持图像格式。 |
VPI_ERROR_INVALID_ARGUMENT | 输入 matPlanes 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | 输入 imgData 为 NULL。 |
VPI_ERROR_INVALID_OPERATION | img 不是由 vpiImageCreateWrapperOpenCVMat 或 vpiImageCreateWrapper 使用正确的缓冲区类型创建的。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 304 行,文件 OpenCVInterop.hpp。
|
inline |
#include <vpi/OpenCVInterop.hpp>
使用来自锁定 VPIImage 的 VPIImageData 中的数据填充现有的 cv::Mat
。
不会复制任何图像内容,它们仅由 cv::Mat
引用。 结果可用于 OpenCV 操作。
如果 imgData 具有 2 个或 3 个在内存中连续并且表示 cv::cvtColor
理解的某些多平面格式(例如 NV12 或 YUV422)的平面,则将填充结果 mat,以便 cv::cvtColor
将其理解为具有这些类型。 换句话说,它们可以与 cv::COLOR_YUV2RGB_NV12
或 COLOR_YUV2RGB_UYVY
一起使用。
[输入] | imgData | 对 VPIImageData 的引用,由 vpiImageLockData 返回。 如果平面的像素类型为 VPI_PIXEL_TYPE_DEFAULT,则将从给定的图像格式推断它。
|
[输出] | mat | 将引用 imgData 内容的 cv::Mat 。
|
VPI_ERROR_INVALID_ARGUMENT | 输出 mat 为 NULL。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | imgData 无效。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 346 行,文件 OpenCVInterop.hpp。
|
inline |
#include <vpi/OpenCVInterop.hpp>
使用来自 VPIImageData 的所有平面填充 cv::Mat
向量。
不会复制任何图像内容,它们仅由 cv::Mat 引用。 结果可用于 OpenCV 操作。
[输入] | imgData | 对 VPIImageData 的引用,由 vpiImageLockData 返回。 如果平面的像素类型为 VPI_PIXEL_TYPE_DEFAULT,则将从给定的图像格式推断它。
|
[输出] | matPlanes | cv::Mat 向量,每个向量封装 imgData 中的一个图像平面。
|
VPI_ERROR_INVALID_ARGUMENT | 输出 matPlanes 为 NULL。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | imgData 无效。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 375 行,文件 OpenCVInterop.hpp。
|
inline |
#include <vpi/OpenCVInterop.hpp>
使用给定的 cv::Mat
中的数据填充现有的 VPIImageData。
它执行 vpiImageDataExportOpenCVMat 的逆操作。 请参阅此函数的描述,了解用于图像格式推断的标准。
[输入] | mat | 对 cv::Mat 的引用,其中包含要填充到输出中的信息
|
[输出] | imgData | VPIImageData 将被填充。 现有内容将被丢弃。
|
VPI_ERROR_INVALID_ARGUMENT | 输入 mat 为空。 |
VPI_ERROR_INVALID_ARGUMENT | mat 具有错误的维度数。 |
VPI_ERROR_INVALID_ARGUMENT | imgData 为 NULL。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 405 行,文件 OpenCVInterop.hpp。
|
inline |
#include <vpi/OpenCVInterop.hpp>
使用给定的 cv::Mat
中的数据填充现有的 VPIImageData,强制使用给定的图像格式。
它执行 vpiImageDataExportOpenCVMat 的逆操作。 请参阅此函数的描述,了解用于图像格式推断的标准。
[输入] | mat | 对 cv::Mat 的引用,其中包含要填充到输出中的信息
|
[输入] | fmt | 与 mat 关联的图像格式。
|
[输出] | imgData | VPIImageData 将被填充。 现有内容将被丢弃。
|
VPI_ERROR_INVALID_ARGUMENT | 输入 mat 为空。 |
VPI_ERROR_INVALID_ARGUMENT | imgData 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | mat 具有错误的维度数。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | fmt 与 mat 不一致。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 440 行,文件 OpenCVInterop.hpp。
|
inline |
#include <vpi/OpenCVInterop.hpp>
使用描述给定 VPIImageData 中所有平面的 cv::Mat
向量填充,强制使用给定的图像格式。
它执行 vpiImageDataExportOpenCVMatPlanes 的逆操作。 请参阅此函数的描述,了解用于图像格式推断的标准。
图像格式不是从输入 cv::Mat
推断出来的,而是由用户给出的。 如果格式与 cv::Mat
不兼容,则会返回错误。
[输入] | matPlanes | cv::Mat 向量,每个向量描述一个平面。
|
[输入] | fmt | 与 matPlanes 关联的图像格式。
|
[输出] | imgData | VPIImageData 将被填充。 现有内容将被丢弃。
|
VPI_ERROR_INVALID_ARGUMENT | imgData 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | matPlanes 为空。 |
VPI_ERROR_INVALID_ARGUMENT | matPlanes 中的某些 cv::Mat 为空或具有错误的维度数。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | fmt 与 matPlanes 不一致。 |
VPI_SUCCESS | 操作执行成功。 |
定义于 480 行,文件 OpenCVInterop.hpp。