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);
image.png

中值模糊

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

medianBlur(frame, f4, 11);

双边模糊

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

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

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


image.png
image.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容