C/C++ OpenCV中值滤波&双边滤波

中值滤波

void medianBlur(

InputArray src,

OutputArray dst,

int Ksize //只能3,5,7,9后的奇数

)

代码如下:

#include 
#include 
#include 

using namespace cv;

int main()
{

	//载入图像
	Mat image = imread("1.jpg");

	//创建窗口
	namedWindow("中值滤波原图");
	namedWindow("中值滤波效果图");

	imshow("中值滤波原图", image);

	//进行滤波
	Mat out;
	medianBlur(image, out, 7);
	imshow("中值滤波效果图", out);

	waitKey(0);

	return 0;
}

运行结果:

C/C++ OpenCV中值滤波&双边滤波_第1张图片



双边滤波bilateralFilter

void bilateralFilter(

InputArray src,

OutputArray dst,

Int d,

double sigmaColor,

double sigmaSpace,

int borderType=BORDER_DEFAULT

)

关于第三个参数:

每个像素领域的直径 负数 的话会从第四个参数推导出
如果值越大说明像素里面有越来越宽的值会在一起

代码如下:

#include 
#include 
#include 

using namespace cv;

int main()
{

	//载入图像
	Mat image = imread("1.jpg");

	//创建窗口
	namedWindow("双边滤波原图");
	namedWindow("双边滤波效果图");

	imshow("双边滤波原图", image);

	//进行滤波
	Mat out;
	bilateralFilter(image, out, 50, 50 * 2, 50 / 2);
	imshow("双边滤波效果图", out);

	waitKey(0);

	return 0;
}
运行如下:

C/C++ OpenCV中值滤波&双边滤波_第2张图片

你可能感兴趣的:(C/C++,OpenCV)