项目功能实现:对一张图片进行高斯双边模糊操作
按照之前的博文结构来,这里就不在赘述了
高斯双边模糊考虑的是图像的x、y方向和RGB方向,两个边
python版本可参考博文:八、边缘保留滤波(EPF)
一、头文件
bilateral_blur.h
#pragma once
#include<opencv2/opencv.hpp>
using namespace cv;
class Bilateral_Blur{
public:
void bilateral_blur(Mat& image);
};
#pragma once
二、函数实现
bilateral_blur.cpp
bilateralFilter(image, result,0,100,10);
参数一:要处理的图片对象
参数二:返回结果存储对象
参数三:邻域的直径,如果是小于等于 0,则由sigmaSpace系统计算得到
参数四:颜色空间滤波器的标准差,值越大表示邻域中有更多的颜色被混合
参数五:空域滤波器的标准差,值越大代表越大范围内的像素(颜色相近)会被相互影响
#include"bilateral_blur.h"
#include<iostream>
#include<opencv2/opencv.hpp>
void Bilateral_Blur::bilateral_blur(Mat& image) {
Mat result;
GaussianBlur(image, result, Size(0, 0), 5, 5);
imshow("GaussianBlur", result);
}
三、主函数
yy_main.cpp
#include <opencv2/opencv.hpp>
#include <iostream>
#include"bilateral_blur.h"
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = cv::imread("E:/C++_workspace/beyond.jpg", IMREAD_COLOR);
if (src.empty()) {
printf("load image is false...\n");
return -1;
}
namedWindow("yanyu", WINDOW_FREERATIO);
imshow("yanyu", src);
Bilateral_Blur yy;
yy.bilateral_blur(src);
waitKey(0);
destroyAllWindows();
return 0;
}
项目结果如下:
运行结果如下: