一、目标
学习如何使用opencv中的函数,学习对图像的双边平滑操作,学习bilateralFilter()函数的使用
二、函数说明
函数原型:
void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, intborderType=BORDER_DEFAULT )
参数详解:
src:源必须是8位或者浮点数,1或者3通道图片。
dst:输出图片,和输入图片相同大小和深度。
d:在滤波过程中使用的各像素邻域直径,如果这是一个非整数,则这个值由sigmaSpace决定。
sigmaColor:颜色空间的标准方差。数值越大,意味着越远的的颜色会被混进邻域内,从而使更大的颜色段获得相同的颜色。
sigmaSpace:坐标空间的标注方差。 数值越大,以为着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。当d>0,d指定了邻域大小且与sigmaSpace无关。否则,d正比于sigmaSpace。
三、程序代码
#include "cv.h" // OpenCV 文件头
#include "highgui.h"
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
Mat m_SrcImg;
m_SrcImg = imread("C:\\Users\\lidabao\\Desktop\\image\\1\\LENA1.bmp", -1);
namedWindow("原图像", 1);
imshow("原图像", m_SrcImg);
Mat m_ResImg;
//双边平滑
bilateralFilter(m_SrcImg, m_ResImg, 3, 3 * 2, 3 / 2);
namedWindow("双边平滑", 1);
imshow("双边平滑", m_ResImg);
waitKey(0);
}
四、结果
程序运行如下图:
五、注意
正确的配置opencv
正确使用bilateralFilter()函数