1. 程式人生 > >高斯濾波-模糊圖片

高斯濾波-模糊圖片

#include <iostream>
#include <opencv2/opencv.hpp>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace std;
using namespace cv;

int main(int argc, char ** argv) {
	Mat image = imread("C:/Users/andy.ke/Desktop/qietu/1233.png");
	namedWindow("高斯濾波之前", WINDOW_AUTOSIZE);
	imshow("高斯濾波之前", image);

	Mat out;
	// 高斯濾波轉換
	/**
	src,輸入影象,即源影象,填Mat類的物件即可。它可以是單獨的任意通道數的圖片,但需要注意,圖片深度應該為CV_8U, CV_16U, CV_16S, CV_32F 以及 CV_64F之一。
	dst,即目標影象,需要和源圖片有一樣的尺寸和型別。比如可以用Mat::Clone,以源圖片為模板,來初始化得到如假包換的目標圖。
	ksize,高斯核心的大小。其中ksize.width和ksize.height可以不同,但他們都必須為正數和奇數(並不能理解)。或者,它們可以是零的,它們都是由sigma計算而來。
	sigmaX,表示高斯核函式在X方向的的標準偏差。
	sigmaY,表示高斯核函式在Y方向的的標準偏差。若sigmaY為零,就將它設為sigmaX,如果sigmaX和sigmaY都是0,那麼就由ksize.width和ksize.height計算出來。
	**/
	GaussianBlur(image, out, Size(7, 7), 3, 3);
	GaussianBlur(out, out, Size(5, 5), 3, 3);
    GaussianBlur(out, out, Size(5, 5), 3, 3);
    GaussianBlur(out, out, Size(5, 5), 3, 3);
    GaussianBlur(out, out, Size(5, 5), 3, 3);
    //  高斯濾波可以多次變換

	namedWindow("高斯濾波之後", WINDOW_AUTOSIZE);
	imshow("高斯濾波之後", out);


// pyrDown 建立一個新的影象,其大小為原來的一半
	pyrDown(out, out2);
	namedWindow("pyrDown之後", WINDOW_AUTOSIZE);
	imshow("pyrDown之後", out2);

	waitKey(0);
}

 

效果圖: