当前位置: 首页 > article >正文

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

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

算法描述

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

函数原型

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
);

参数

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

代码示例

#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;}// 上传到 GPUcv::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,               // sigmaX1.5                // sigmaY);// 应用高斯滤波器gaussianFilter->apply( d_src, d_dst );// 下载结果回 CPUcv::Mat h_dst;d_dst.download( h_dst );// 显示原始图像及高斯模糊后的图像cv::imshow( "Original", h_img );cv::imshow( "Gaussian Blurred", h_dst );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

http://www.lryc.cn/news/2384164.html

相关文章:

  • 计算机视觉与深度学习 | matlab实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据)
  • 可视化图解算法43:数组中的逆序对
  • 【Python】使用Python实现调用API获取图片存储到本地
  • 腾讯2025年校招笔试真题手撕(一)
  • Vue3 与 Vue2 区别
  • java集合详细讲解
  • 嵌入式学习笔记 - STM32 U(S)ART 模块HAL 库函数总结
  • 【VLNs篇】04:SayNav-为新环境中的动态规划到导航进行大型语言模型的基础构建
  • MySQL中添加一个具有创建数据库权限的用户
  • oracle使用SPM控制执行计划
  • [Java实战]Spring Boot整合Seata:分布式事务一致性解决方案(三十一)
  • Openwrt下使用ffmpeg配合自建RTSP服务器实现推流
  • MySQL 索引的增删改查
  • MySQL Host 被封锁解决方案(全版本适用 + Java 后端优化)
  • wifi 如果检查失败,UI 就会出现延迟或缺失打勾的现象。
  • 点云(point cloud):自动驾驶的“三维扫描图“
  • Redis 中如何保证缓存与数据库的数据一致性?
  • Oracle RAC节点时间差异同步测试
  • python 打卡DAY27
  • 位运算及其算法
  • flutter getx路由管理、状态管理、路由守卫中间件、永久储存get_storage
  • 贪心算法之跳跃游戏问题
  • Dockers Compose常用指令介绍
  • YOLOv11 性能评估与横向对比
  • kafka在线增加分区副本数
  • Unity 如何使用Timeline预览、播放特效
  • GIM发布新版本了 (附rust CLI制作brew bottle流程)
  • GitHub 趋势日报 (2025年05月21日)
  • MySQL篇-其他面试题
  • iOS 蓝牙开发中的 BT 与 BLE