1 cmake_minimum_required(VERSION 3.5)
7 find_package(vpi REQUIRED)
8 find_package(OpenCV REQUIRED)
11 add_executable(vpi_blur main.cpp)
13 # 它使用 vpi 和 opencv。CMake 将自动
15 # 并使 hello_work 链接到这些库。
16 target_link_libraries(vpi_blur vpi opencv_core opencv_imgproc opencv_imgcodecs)
30 #include <opencv2/core/version.hpp>
31 #include <opencv2/imgproc/imgproc.hpp>
32 #if CV_MAJOR_VERSION >= 3
33 # include <opencv2/imgcodecs.hpp>
35 # include <opencv2/highgui/highgui.hpp>
52 int main(
int argc,
char *argv[])
56 std::cerr <<
"必须传递要模糊的输入图像" << std::endl;
63 cv::Mat cvImage = cv::imread(argv[1]);
64 if (cvImage.data == NULL)
66 std::cerr <<
"无法打开输入图像" << std::endl;
123 imwrite(
"tutorial_blurred.png", cvOut);
用于处理 OpenCV 与 VPI 的互操作性的函数。
VPIStatus vpiSubmitBoxFilter(VPIStream stream, uint64_t backend, VPIImage input, VPIImage output, int32_t kernelWidth, int32_t kernelHeight, VPIBorderExtension border)
在图像上运行 2D 盒式滤波器。
void vpiImageDestroy(VPIImage img)
销毁图像实例。
struct VPIImageImpl * VPIImage
图像的句柄。
VPIStatus vpiImageLockData(VPIImage img, VPILockMode mode, VPIImageBufferType bufType, VPIImageData *data)
获取图像对象的锁并返回图像内容。
VPIStatus vpiImageCreate(int32_t width, int32_t height, VPIImageFormat fmt, uint64_t flags, VPIImage *img)
使用指定的标志创建空图像实例。
VPIStatus vpiImageUnlock(VPIImage img)
释放图像对象上的锁。
@ VPI_IMAGE_BUFFER_HOST_PITCH_LINEAR
主机可访问,平面采用线性内存布局。
VPIStatus vpiImageCreateWrapperOpenCVMat(const cv::Mat &mat, VPIImageFormat fmt, uint64_t flags, VPIImage *img)
使用给定的图像格式将 cv::Mat 包装在 VPIImage 中。
VPIStatus vpiImageDataExportOpenCVMat(const VPIImageData &imgData, cv::Mat *mat)
使用来自锁定 VPIImage 的 VPIImageData 中的数据填充现有的 cv::Mat。
struct VPIStreamImpl * VPIStream
流的句柄。
VPIStatus vpiStreamSync(VPIStream stream)
阻塞调用线程,直到此流队列中的所有提交命令都完成(队列为空)...
void vpiStreamDestroy(VPIStream stream)
销毁流实例并释放所有硬件资源。
VPIStatus vpiStreamCreate(uint64_t flags, VPIStream *stream)
创建流实例。
@ VPI_BACKEND_CUDA
CUDA 后端。
@ VPI_BORDER_ZERO
图像外部的所有像素均被视为零。
@ VPI_LOCK_READ
仅锁定内存以进行读取。