1.对图像的平滑处理
代码如下:
#include <opencv2/opencv.hpp>
int main() {
cv::Mat img = cv::imread("D://My Code/Test_OpenCV/test_2/test1.jpg");
cv::namedWindow("Example_1", cv::WINDOW_AUTOSIZE);
cv::namedWindow("Example_2", cv::WINDOW_AUTOSIZE);
cv::imshow("Example_1", img);
cv::Mat out;
cv::GaussianBlur(img, out, cv::Size(5, 5), 3, 3);
cv::GaussianBlur(out, out, cv::Size(5, 5), 3, 3);
cv::imshow("Example_2", out);
cv::waitKey(0);
}
运行结果如图:
简单介绍一下GaussianBlur()函数
GaussianBlur()函数用高斯滤波器(GaussianFilter)对图像进行平滑处理。
该函数将源图像与指定的高斯内核进行卷积,同时也支持in-place滤波。
斯滤波是通过对输入数组的每个点与输入的高斯滤波模板执行卷积计算然后将这些结果一块组成了滤波后的输出数组,通俗的讲就是高斯滤波是对整幅图像进行加权平均的过程,每一个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
函数如下:
void cv::GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX,
double sigmaY = 0, int