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

OpenCV 图形API(33)图像滤波-----高斯模糊函数gaussianBlur()

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

算法描述

使用高斯滤波器对图像进行模糊处理。
该函数使用指定的高斯核对源图像进行滤波。输出图像必须与输入图像具有相同的类型和通道数。

cv::gapi::gaussianBlur 是 OpenCV 的 G-API 模块中用于对图像应用高斯模糊的函数。高斯模糊是一种常用的图像处理技术,它通过使用高斯函数来平滑图像,减少噪声和细节。

支持的输入矩阵数据类型有 CV_8UC1、CV_8UC3、CV_16UC1、CV_16SC1 和 CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意:
如果硬件支持,则会进行向最近偶数的舍入;如果不支持,则向最近的整数舍入。
函数的文本ID为 “org.opencv.imgproc.filters.gaussianBlur”。

函数原型

GMat cv::gapi::gaussianBlur
(
 	const GMat &  	src,
	const Size &  	ksize,
	double  	sigmaX,
	double  	sigmaY = 0,
	int  	borderType = BORDER_DEFAULT,
	const Scalar &  	borderValue = Scalar(0) 
) 	

参数

  • 参数 src: 输入图像;
  • 参数 ksize: 高斯核大小。ksize.width 和 ksize.height 可以不同,但它们都必须是正奇数。或者它们都可以是零,然后根据 sigma 计算得出;
  • 参数 sigmaX: 高斯核在 X 方向上的标准差;
  • 参数 sigmaY: 高斯核在 Y 方向上的标准差;如果 sigmaY 为零,则它被设置为等于 sigmaX;如果两个 sigma 都为零,则分别根据 ksize.width 和 ksize.height 计算(详见 cv::getGaussianKernel);为了完全控制结果,无论未来可能对所有这些语义进行何种修改,建议指定 ksize、sigmaX 和 sigmaY;
  • 参数 borderType: 像素外推方法,参见 cv::BorderTypes;
  • 参数 borderValue: 在使用常量边界情况下边界的值。

代码示例

#include <opencv2/opencv.hpp>
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp> // 确保包含核心操作头文件

int main()
{
    // 加载图像
    cv::Mat src = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_COLOR);
    if (src.empty())
    {
        std::cerr << "无法加载图像" << std::endl;
        return -1;
    }

    // 定义高斯核大小和标准差
    cv::Size ksize(5, 5); // 核大小
    double sigmaX = 1.5;  // X方向的标准差
    double sigmaY = 0;    // Y方向的标准差,设为0表示与X方向相同

    // 创建GAPI图:定义输入输出
    cv::GMat in;
    auto blurred = cv::gapi::gaussianBlur(in, ksize, sigmaX, sigmaY);

    // 创建GComputation对象
    cv::GComputation comp(cv::GIn(in), cv::GOut(blurred));

    // 应用到输入图像上
    cv::Mat out;
    comp.apply(src, out);

    // 显示结果
    cv::imshow("Original Image", src);
    cv::imshow("Blurred Image", out);
    cv::waitKey();

    return 0;
}

运行结果

在这里插入图片描述

相关文章:

  • 3D版的VLA:从3D VLA、SpatialVLA到PointVLA——3D点云版的DexVLA,在动作专家中加入3D数据
  • 人工智能100问☞第4问:人工智能与机器学习、深度学习的区别?
  • Matplotlib库详解
  • 网页防篡改与盗链防护:实时监控与自动化修复实践
  • python中,sort(reverse=True)与列表.reverse的区别
  • 【集成电路版图设计学习笔记】2. 基本绘制的layer层和电路失效机制
  • ubuntu22.04安装zabbix7.0
  • ubuntu学习day2
  • 机器学习核心知识:从基础概念到关键算法
  • 高性能IO的基石:零拷贝(Zero-Copy)技术全解析
  • 云渗透一(云租户渗透⼊⻔)
  • IO模式精讲总结
  • ARM处理器程序烧写方式
  • PCB设计整板铺铜说明
  • 文件编码并转成 UTF-8
  • 同构应用开发
  • Vue--组件练习案例
  • 【ROS2】行为树 BehaviorTree(三):异步操作
  • 007.Gitlab CICD缓存与附件
  • 基于SSM框架的校园食堂小程序设计与实现
  • 筑牢安全防线、提升应急避难能力水平,5项国家标准发布
  • 经济日报金观平:充分发挥超大规模市场优势
  • 三星“七天机”质保期内屏幕漏液被要求自费维修,商家:系人为损坏
  • “爱鸟周”为何不能像FI和花展那样“市区联动”
  • 来论|建设性推进缅北和平进程——中国的智慧与担当
  • “救护车”转运病人半路加价,从宝鸡到西安往返都要多收钱