opencv学习笔记(8):图像模糊

Smooth/Blur 是图像处理中最简单和常用的操作之一
使用该操作的原因之一就为了给图像预处理时候减低噪声
使用Smooth/Blur操作其背后是数学的卷积计算

通常这些卷积算子计算都是线性操作,所以又叫线性滤波

在这里插入图片描述
在这里插入图片描述
void cv::blur ( InputArray src,
OutputArray dst,
Size ksize,
Point anchor = Point(-1,-1),
int borderType = BORDER_DEFAULT
)

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

实例

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

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	Mat src, dst,gblur;
	src = imread("F:/1.jpg");
	if (src.empty())
	{
		cout << "cannot load image" << endl;
		return -1;
	}
	namedWindow("input", WINDOW_AUTOSIZE);
	imshow("input", src);
	
	blur(src, dst, Size(15, 15), Point(-1, -1));
	imshow("blur output", dst);

	GaussianBlur(src, gblur, Size(15, 15), 11, 11);
	imshow("gaussian blur output", gblur);
	waitKey(0);
	return 0;
}

中值滤波
在这里插入图片描述
双边滤波
在这里插入图片描述
在这里插入图片描述
void cv::medianBlur ( InputArray src,
OutputArray dst,
int ksize
)

void cv::bilateralFilter ( InputArray src,
OutputArray dst,
int d,
double sigmaColor,
double sigmaSpace,
int borderType = BORDER_DEFAULT
)
在这里插入图片描述

int main(int argc, char** argv)
{
	Mat src, dst;
	src = imread("F:/1.jpg");
	if (src.empty())
	{
		cout << "cannot load image" << endl;
		return -1;
	}
	namedWindow("input", WINDOW_AUTOSIZE);
	imshow("input", src);

	/*medianBlur(src, dst, 3);*/
	bilateralFilter(src, dst, 15, 150, 3);
	namedWindow("bilateral filter result", WINDOW_AUTOSIZE);
	imshow("bilateral filter result",dst);

	Mat result;
	Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
	filter2D(dst, result, -1, kernel, Point(-1, -1), 0);
	imshow("result", result);

	waitKey(0);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值