OpenCV的CUDA模块进行图像处理

本文介绍了使用OpenCV和CUDA加速的四种图像处理技术:灰度化、高斯模糊、Sobel边缘检测和直方图均衡化。每种技术都通过将图像数据上传到GPU,利用CUDA进行加速处理,最后将结果下载回CPU。灰度化通过cv::cuda::cvtColor实现,高斯模糊使用cv::cuda::createGaussianFilter创建滤波器,Sobel边缘检测通过cv::cuda::createSobelFilter实现,直方图均衡化则通过cv::cuda::equalizeHist完成。这些方法显著提升了图像处理的效率。

1、图像灰度化

cpp 复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>

void convertToGray(const cv::Mat& input, cv::Mat& output) {
    // 将数据上传到GPU
    cv::cuda::GpuMat d_input(input);
    cv::cuda::GpuMat d_output;
    
    // 使用CUDA加速的灰度化
    cv::cuda::cvtColor(d_input, d_output, cv::COLOR_BGR2GRAY);
    
    // 将结果下载回CPU
    d_output.download(output);
}

2. 高斯模糊 (GaussianBlur)

cpp 复制代码
#include <opencv2/cudafilters.hpp>

void gaussianBlurGPU(const cv::Mat& input, cv::Mat& output, cv::Size ksize, double sigma) {
    cv::cuda::GpuMat d_input(input);
    cv::cuda::GpuMat d_output;
    
    // 创建高斯滤波器
    auto filter = cv::cuda::createGaussianFilter(d_input.type(), d_output.type(), ksize, sigma);
    
    // 应用滤波器
    filter->apply(d_input, d_output);
    
    d_output.download(output);
}

3. Sobel边缘检测

cpp 复制代码
void sobelEdgeDetection(const cv::Mat& input, cv::Mat& output, int dx, int dy, int ksize) {
    cv::cuda::GpuMat d_input(input);
    cv::cuda::GpuMat d_output;
    
    // 创建Sobel滤波器
    auto sobel = cv::cuda::createSobelFilter(d_input.type(), d_output.type(), dx, dy, ksize);
    
    // 应用滤波器
    sobel->apply(d_input, d_output);
    
    d_output.download(output);
}

4. 直方图均衡化 (equalizeHist)

cpp 复制代码
#include <opencv2/cudaimgproc.hpp>

void histogramEqualizationGPU(const cv::Mat& input, cv::Mat& output) {
    cv::cuda::GpuMat d_input(input);
    cv::cuda::GpuMat d_output;
    
    // CUDA直方图均衡化
    cv::cuda::equalizeHist(d_input, d_output);
    
    d_output.download(output);
}
相关推荐
Litluecat14 分钟前
2026年7月22日科技热点新闻
人工智能·科技·新闻·每日·速览
To_OC22 分钟前
别再傻傻分不清:Workflow 和 Agent 到底不是一回事
人工智能·agent·workflow
触底反弹42 分钟前
🔥 2026 大模型选择指南:别再只看 Benchmark 了,这些维度才是关键!
人工智能·面试
神奇霸王龙1 小时前
GB/T 46886 闭环屠夫:5 旗舰多模态 LLM 工业质检实测
人工智能·计算机视觉·ai·开源·ai编程·本地部署
南讯股份Nascent1 小时前
洽洽全域会员项目启动会圆满召开
大数据·人工智能
大郭鹏宇1 小时前
基于 LangGraph 构建智能分诊系统(一):项目概述与环境搭建
大数据·人工智能·microsoft·langchain
小林ixn1 小时前
大模型的“高考成绩单”:读懂Benchmark,选对真·生产力模型
人工智能·llm·测试
冬奇Lab2 小时前
AI 评测系列(04):RAG 评测——RAGAS 四指标实战与一个反直觉发现
人工智能·llm·agent
三声三视2 小时前
uni-app 鸿蒙端传参变成 [object Object]?顺着源码追到 ArkTS router 底层才搞明白
人工智能·ai·uni-app·aigc·ai编程·harmonyos
fthux2 小时前
“装闭”,让装修套路“装”不下去
人工智能·ai·开源·github·open source