OpenCV CUDA 模块图像过滤------创建一个高斯滤波器函数createGaussianFilter()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::cuda::createGaussianFilter 是 OpenCV CUDA 模块中的一个工厂函数,用于创建一个高斯滤波器。这个滤波器可以用来平滑图像,减少噪声,并且在很多计算机视觉任务中作为预处理步骤非常有用。

函数原型

cpp 复制代码
cv::Ptr<cv::cuda::Filter> cv::cuda::createGaussianFilter
(
    int srcType,
    int dstType,
    cv::Size ksize,
    double sigma1,
    double sigma2 = 0,
    int rowBorderMode = cv::BORDER_DEFAULT,
    int columnBorderMode = -1
);

参数

参数名 类型 描述
srcType int 输入图像类型,例如 CV_8UC1, CV_32FC1 等。
dstType int 输出图像类型,通常与输入类型相同或根据需求指定。
ksize cv::Size 高斯核大小(宽度和高度),必须为正奇数。如果设置为 (0, 0),则根据 sigma1 和 sigma2 自动计算。
sigma1 double x方向的标准差。
sigma2 double y方向的标准差。如果设为 0,则与 sigma1 相同。
rowBorderMode int 行方向上的边界填充模式,默认为 cv::BORDER_DEFAULT。
columnBorderMode int 列方向上的边界填充模式,默认使用 rowBorderMode 的值(即 -1)。

代码示例

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

int main()
{
    // 读取灰度图像
    cv::Mat h_img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE );
    if ( h_img.empty() )
    {
        std::cerr << "Error: Image not found!" << std::endl;
        return -1;
    }

    // 上传到 GPU
    cv::cuda::GpuMat d_src, d_dst;
    d_src.upload( h_img );

    // 创建高斯滤波器(ksize=5x5, sigmaX=1.5)
    cv::Ptr< cv::cuda::Filter > gaussianFilter = cv::cuda::createGaussianFilter( d_src.type(),      // 输入类型(CV_8UC1)
                                                                                 d_src.type(),      // 输出类型与输入相同
                                                                                 cv::Size( 5, 5 ),  // 核大小
                                                                                 1.5,               // sigmaX
                                                                                 1.5                // sigmaY
    );

    // 应用高斯滤波器
    gaussianFilter->apply( d_src, d_dst );

    // 下载结果回 CPU
    cv::Mat h_dst;
    d_dst.download( h_dst );

    // 显示原始图像及高斯模糊后的图像
    cv::imshow( "Original", h_img );
    cv::imshow( "Gaussian Blurred", h_dst );
    cv::waitKey( 0 );

    return 0;
}

运行结果

相关推荐
JWASX4 分钟前
【agent 开发】Agent 智能体
大数据·人工智能·python
智购科技无人售货机工厂店8 分钟前
玻璃瓶饮料破损率突然上升,排查发现是取货口缓冲垫老化了~YH
java·开发语言·人工智能·python·eclipse
骇客野人11 分钟前
业务系统接入AI方案及全流程实施过程
人工智能
一木 之林15 分钟前
Dify学习笔记 00 · 总览:56集四模块学习地图(从低代码平台到检索底座)
人工智能·计算机视觉·langchain
镜象科技16 分钟前
中小学AI心理健康解决方案服务商怎么选?2026年选型参考
android·java·人工智能
枫叶丹417 分钟前
语音 AI 怎样边听边答:实时对话系统的工作原理
开发语言·人工智能·chatgpt·开源·php·agent·codex
楚楚25122 分钟前
播客单声道怎么变立体声:先明确需求再选择处理方案
人工智能
田里的水稻26 分钟前
IL_部署推理---工具和语言
人工智能·神经网络·机器学习
俊男无期27 分钟前
【AI 和未来】工作(1)
人工智能
IT大白鼠28 分钟前
彭大帅的AI运维助手实战案例 5 · 新接手的服务器,先让 AI 摸底
运维·服务器·人工智能