平滑 / 模糊
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);
中值模糊
分布方式按照像素的颜色来动态分布, 用于去除噪点
medianBlur(frame, f4, 11);
双边模糊
用于区分颜色的模糊方式,边缘颜色对比强烈时保留细节,opencv的双边不能报考透明通道,否则会报错
cvtColor(frame, frame, COLOR_BGRA2BGR);
bilateralFilter(frame, f5, 11, _s1.value*2,_s2.value*2, BORDER_REPLICATE);
双边模糊可以用于人脸磨皮,你的美颜相机其中就有这个算法
在这里可以找到ps中对应滤镜的函数,真的很有趣