opencv学习笔记——vs2019的编译环境(四)滤波:方框滤波、均值滤波、高斯滤波、中值滤波、双边滤波

第四课 滤波方式

滤波是过滤图片数据中的噪声,换种说法就是用一些巧妙的计算方法去改变图像矩阵的数值,从而使图像改变状态。
这里以均值滤波为例,均值滤波(即为图片马赛克效果)就是定义了一个自定大小的内核矩阵,在一张1024*960像素大小的图片中,对九十多万个像素点进行运算,当内核矩阵为3x3时,即对矩形范围内的9个像素点的色彩通道等数据取均值,将矩形范围内的九个像素点的值一致化。当这个内核矩阵的边值较小时,图像处理后的效果即为简单的模糊,内核矩阵的边值足够大时,多个像素点的内值一致化,人眼就可看出马赛克的效果。对于高斯滤波、双边滤波、中指滤波等滤波方式,其运算过程也不尽相同,只是内核矩阵可能不同,运算方式可能不同。
对于上面的长篇大论也许不用太深究,当满足实际工程需要时,查找一下各种滤波方式的运算方式即可,比如均值滤波是马赛克效果,高斯滤波是模糊效果。行了废话不多说,下面是示例代码,函数声明以及相关注释代码中都很详细。

#include <opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;

//-----------------------------------【全局变量声明部分】--------------------------------------
Mat g_srcImage, g_dstImage1, g_dstImage2, g_dstImage3,g_dstImage4, g_dstImage5;//存储图片的Mat类型
int g_nBoxFilterValue = 3;  //方框滤波参数值
int g_nMeanBlurValue = 3;  //均值滤波参数值
int g_nGaussianBlurValue = 3;  //高斯滤波参数值
int g_nMedianBlurValue = 10;  //中值滤波参数值
int g_nBilateralFilterValue = 10;  //双边滤波参数值


//-----------------------------------【全局函数声明部分】--------------------------------------
//轨迹条的回调函数如下
static void on_BoxFilter(int, void*);            //方框滤波的回调函数
static void on_MeanBlur(int, void*);           //均值滤波的回调函数
static void on_GaussianBlur(int, void*);           //高斯滤波的回调函数
static void on_MedianBlur(int, void*);               //中值滤波的回调函数
static void on_BilateralFilter(int, void*);                    //双边滤波的回调函数

//-----------------------------------【main( )函数】--------------------------------------------
int main()
{
	//改变console字体颜色
	system("color 5E");

	//载入原图
	g_srcImage = imread("1.jpg", 1);
	if (!g_srcImage.data) { printf("Oh,no,读取srcImage错误~!\n"); return false; }

	//克隆原图到三个Mat类型中,尺寸类型必须一致,故直接克隆,或者参考学习程序三,定义一个黑图也可。
	g_dstImage1 = g_srcImage.clone();
	g_dstImage2 = g_srcImage.clone();
	g_dstImage3 = g_srcImage.
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值