高斯濾波-模糊圖片
阿新 • • 發佈:2018-12-19
#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); }
效果圖: