首页 > 其他分享 >OpenCV图像滤波(6)高斯滤波函数GaussianBlur()的使用

OpenCV图像滤波(6)高斯滤波函数GaussianBlur()的使用

时间:2024-08-09 15:26:35浏览次数:14  
标签:src GaussianBlur 高斯 滤波 OpenCV sigmaY ksize 图像 sigmaX

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

算法描述

函数使用高斯滤波器对图像进行模糊处理。
该函数使用指定的高斯核对源图像进行卷积。支持原位过滤。
高斯模糊是一种有效的图像平滑技术,可以减少图像中的噪声和细节。

函数原型

void cv::GaussianBlur	
(
	InputArray 	src,
	OutputArray 	dst,
	Size 	ksize,
	double 	sigmaX,
	double 	sigmaY = 0,
	int 	borderType = BORDER_DEFAULT 
)		

参数

  • 参数src 输入图像;图像可以有任意数量的通道,这些通道会独立处理,但是图像的深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
  • 参数dst 输出图像,其大小和类型与 src 相同。
  • 参数ksize 高斯核的大小。ksize.width 和 ksize.height 可以不同,但它们都必须是正数且为奇数。或者,它们都可以设为零,在这种情况下,它们会根据 sigmaX 和 sigmaY 自动计算。
  • 参数sigmaX 高斯核在 X 方向的标准差。
  • 参数sigmaY 高斯核在 Y 方向的标准差;如果 sigmaY 为零,则将其设置为等于 sigmaX;如果 sigmaX 和 sigmaY 都为零,则它们会根据 ksize.width 和 ksize.height 分别计算(参见 cv::getGaussianKernel 的详情);为了完全控制结果并避免将来可能的语义变化的影响,建议指定所有的 ksize、sigmaX 和 sigmaY。
  • 参数borderType 像素外推方法,参见 BorderTypes。BORDER_WRAP 不受支持。

示例代码


#include <iostream>
#include <opencv2/opencv.hpp>

int main( int argc, char** argv )
{
    // 读取图像
    cv::Mat src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/erik.jpg", cv::IMREAD_COLOR );

    if ( src.empty() )
    {
        std::cout << "Error: Image cannot be loaded!" << std::endl;
        return -1;
    }

    cv::Size sz2Sh( 400, 600 );

    cv::resize( src, src, sz2Sh, 0, 0, cv::INTER_LINEAR_EXACT );

    // 使用 GaussianBlur 进行平滑处理
    cv::Mat dst;
    cv::GaussianBlur( src, dst, cv::Size( 9, 9 ), 0, 0, cv::BORDER_DEFAULT );

    // 显示图像
    cv::namedWindow( "原始图像", cv::WINDOW_NORMAL );
    cv::imshow( "原始图像", src );

    cv::namedWindow( "高斯滤波后的图像", cv::WINDOW_NORMAL );
    cv::imshow( "高斯滤波后的图像", dst );

    cv::waitKey( 0 );

    return 0;
}

运行结果

在这里插入图片描述

标签:src,GaussianBlur,高斯,滤波,OpenCV,sigmaY,ksize,图像,sigmaX
From: https://blog.csdn.net/jndingxin/article/details/140962282

相关文章

  • OpenCV图像滤波(7)cv::getDerivKernels() 函数的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述函数返回用于计算空间图像导数的滤波系数。该函数计算并返回用于空间图像导数的滤波系数。当ksize=FILTER_SCHARR时,生成Scharr3x3核(参见Scharr)。否则,生成Sobel核(参见Sob......
  • OpenCV 其他形态学操作
    一:顶帽实现(原图像与开操作图像的差值)importcv2ascvimportnumpyasnpdeftop_hat_demo(image):gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)cv.imshow("binary",binary)......
  • OpenCV 分水岭算法
    使用分水岭算法进行图像分割(一)获取灰度图像,二值化图像,进行形态学操作,消除噪点defwatershed_demo(image):blur=cv.pyrMeanShiftFiltering(image,10,100)gray=cv.cvtColor(blur,cv.COLOR_BGR2GRAY)#获取灰度图像ret,binary=cv.threshold(gray,0,2......
  • OpenCV 人脸检测
    目录一:相关依赖文件下载二:实现步骤(图片检测)  (一)读取图片  (二)灰度转换  (三)获取人脸识别训练数据  (四)探测人脸,获取相关数据  (五)根据相关数据在原图像上画出人脸位置  (六)全部代码三:实现视频检测人脸  步骤相同,我们只需要将视频中每一帧图像进行处理,......
  • OpenCV 数字验证码识别
    目录一:依赖环境安装二:安装tesseract-ocr  (一)介绍  (二)下载地址  (三)下载traineddata训练数据三:代码实现一:依赖环境安装pipinstallPillowpip3installpytesseract二:安装tesseract-ocr(一)介绍其中pytesseract会直接调用tesseract模块,我们需要进行安装不......
  • OpenCV 基本使用
    OpenCV基本使用参考教程:GitHub-gaoxiang12/slambook2:edition2oftheslambook1.安装OpenCV1.1下载OpenCV参考教程:无法定位软件包libjasper-dev的解决办法-CSDN博客视觉slam14讲ch5opencv安装ubuntu20.04_libvtk5-dev-CSDN博客OpenCV提供了大量的开源图像算......
  • OpenCV专栏介绍
    在当今人工智能和计算机视觉领域,OpenCV作为一个功能强大的开源库,已经成为实现各种视觉算法的基石。本“OpenCV”专栏致力于帮助读者深入理解并掌握OpenCV的使用,从而在计算机视觉项目中发挥关键作用。专栏导读随着技术的不断进步,计算机视觉在自动驾驶、人脸识别、图像处理......
  • 基于dq0变换的三相并联有源电力滤波器研究(Simulink仿真实现)
     ......
  • python opencv图片简单操作
    一、从文件读取图片cv2.imread(filename,flags) 参数: filepath:读入image的完整路径 flags:标志位,{cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED} cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,可用1作为实参替代 cv2.IMREAD_GRAYSCALE:读入......
  • 滤波算法(移动平均滤波)
    常见的滤波算法有:限幅滤波法,中位值滤波算法,算术平均滤波法,移动平均滤波算法(也叫递推平均滤波算法),中位值平均滤波算法等等。    服务器实时接收硬件传送过来的实时温度,实时浓度,实时电压,实时电流等实时数据时,通常会出现将异常的数据传送过来,比如电压,当实时接收硬件检测......