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

  • 操作系统: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;
}

运行结果

在这里插入图片描述

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值