OpenCV C++ 简单小技巧 - 模糊/平滑 (5

平滑 / 模糊

int blurValue = 10;
Mat kernel = Mat::ones(blurValue,blurValue, CV_32F)/blurValue/blurValue;
filter2D(frame, f1, -1, kernel);

这里构建的卷积是一个nxn大小区域,区域内得到卷积为1,范围越大模糊也就越明显,这种模糊没有高斯分布模糊好看。但是最快的处理方式。

均值模糊, 同上面例子

blur(frame, f2, {10,10});

高斯模糊

分布方式为高斯分布,越接近当前点,越获得更高权重

GaussianBlur(frame, f3, {11,11}, 0);
OpenCV C++ 简单小技巧 - 模糊/平滑 (5_第1张图片
image.png

中值模糊

分布方式按照像素的颜色来动态分布, 用于去除噪点

medianBlur(frame, f4, 11);

双边模糊

用于区分颜色的模糊方式,边缘颜色对比强烈时保留细节,opencv的双边不能报考透明通道,否则会报错

cvtColor(frame, frame, COLOR_BGRA2BGR);
bilateralFilter(frame, f5, 11, _s1.value*2,_s2.value*2, BORDER_REPLICATE);

双边模糊可以用于人脸磨皮,你的美颜相机其中就有这个算法


OpenCV C++ 简单小技巧 - 模糊/平滑 (5_第2张图片
image.png
OpenCV C++ 简单小技巧 - 模糊/平滑 (5_第3张图片
image.png

在这里可以找到ps中对应滤镜的函数,真的很有趣

你可能感兴趣的:(OpenCV C++ 简单小技巧 - 模糊/平滑 (5)