OpenCV图像滤波(11)中值滤波medianBlur函数的使用

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

功能描述

该函数使用中值滤波器对图像进行模糊处理。

该函数采用 ksize×ksize 的窗口尺寸对图像进行平滑处理。对于多通道图像,每个通道将被独立处理。该函数还支持在原图像上直接进行操作(即原位操作)。

medianBlur 函数是计算机视觉和数字图像处理中常用的一种操作,它使用中值滤波器对图像进行处理,有助于减少噪声同时保持边缘细节。这个函数特别适用于去除图像中的椒盐噪声。

函数原型

cpp 复制代码
void cv::medianBlur	
(
	InputArray 	src,
    OutputArray 	dst,
    int 	ksize 
)	

参数

  • 参数src: 输入图像,可以是单通道、三通道或四通道图像。当 ksize 为 3 或 5 时,图像深度应为 CV_8U、CV_16U 或 CV_32F。对于更大的窗口尺寸,图像深度只能是 CV_8U。
  • 参数dst: 输出图像,其大小和类型与输入图像 src 相同。
  • 参数ksize: 内核线性尺寸;它必须是一个大于 1 的奇数,例如:3、5、7 等。

代码示例

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

int main()
{
    // 加载图像
    cv::Mat src = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/erik.jpg", cv::IMREAD_COLOR );

    if ( src.empty() )
    {
        std::cout << "无法加载图像,请检查路径是否正确。" << std::endl;
        return -1;
    }

    cv::Size sz2Sh( 400, 600 );
    cv::resize( src, src, sz2Sh, 0, 0, cv::INTER_LINEAR_EXACT );

    // 定义内核大小
    int ksize = 5;  // 必须是大于 1 的奇数

    // 进行中值滤波
    cv::Mat dst;
    cv::medianBlur( src, dst, ksize );

    // 显示结果
    cv::imshow( "原始图像", src );
    cv::imshow( "中值滤波后的图像", dst );
    cv::waitKey( 0 );  // 等待按键

    return 0;
}

运行结果

相关推荐
一尘之中2 小时前
使用 PyTorch TunableOp 加速 ROCm 上的模型
人工智能·pytorch·学习
Eric.Lee20213 小时前
数据集-目标检测系列- 牵牛花 检测数据集 morning_glory >> DataBall
人工智能·python·yolo·目标检测·计算机视觉·牵牛花检测
搏博3 小时前
卷积神经网络(CNN)中的全连接层(Fully Connected Layer)
人工智能·神经网络·cnn
如生命般费解的谜团5 小时前
LLM学习笔记(7)Scaled Dot-product Attention
人工智能·笔记·学习·语言模型·json
FreeIPCC7 小时前
电话机器人是什么?
大数据·人工智能·语言模型·机器人·开源·信息与通信
字节数据平台7 小时前
火山引擎数据飞轮探索零售企业大促新场景:下放营销活动权限
大数据·人工智能
努力学习的啊张8 小时前
消息称三星正与 OpenAI 洽谈,有望令 Galaxy AI 整合ChatGPT,三星都要和chatgpt合作了,你会使用chatgpt了吗?
人工智能·chatgpt
Together_CZ8 小时前
GPT-4 Technical Report——GPT-4技术报告
人工智能·gpt-4
huaqianzkh9 小时前
人工智能大趋势下软件开发的未来
人工智能
酱香编程,风雨兼程10 小时前
深度学习——多层感知机的从零开始实现和简洁实现
人工智能·深度学习