OpenCV的CUDA API主要用于在GPU上执行图像处理任务。以下是一个简单的示例,展示了如何使用OpenCV的CUDA模块进行图像模糊处理:
#include <opencv2/opencv.hpp>
#include <opencv2/cudaarithm.hpp>
#include <opencv2/cudafilters.hpp>
#include <opencv2/cudaimgproc.hpp>
using namespace cv;
using namespace cv::cuda;
int main()
{
// 读取图像
Mat src = imread("input.jpg", IMREAD_COLOR);
if (src.empty())
{
std::cout << "无法读取图像" << std::endl;
return -1;
}
// 将图像从CPU内存复制到GPU内存
Mat d_src, d_dst;
d_src.upload(src);
// 创建输出图像
d_dst.create(src.size(), src.type());
// 定义卷积核
Ptr<Kernel> kernel = getGaussianKernel(5, 0, CV_32F);
// 使用CUDA滤波器进行卷积操作
cuda::filter2D(d_src, d_dst, -1, kernel);
// 将结果从GPU内存复制回CPU内存
Mat result;
d_dst.download(result);
// 显示结果
imshow("Result", result);
waitKey(0);
return 0;
}
在这个示例中,我们首先读取一张图像,然后将其从CPU内存复制到GPU内存。接着,我们创建一个输出图像,并定义一个高斯卷积核。最后,我们使用CUDA滤波器对输入图像进行卷积操作,并将结果从GPU内存复制回CPU内存。