1. 程式人生 > >OpenCV入門:平滑處理 — 高斯模糊

OpenCV入門:平滑處理 — 高斯模糊

平滑處理 — 高斯模糊

相關函式:

C++: void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT)

引數解析:

  • src – 輸入圖片,可以使是任意通道數,該函式對通道是獨立處理的,但是深度只能是CV_8UCV_16UCV_16SCV_32F
     or CV_64F.
  • dst – 輸出圖片,和輸入圖片相同大小和深度。
  • ksize – 高斯核心大小。ksize.widthksize.height允許不相同但他們必須是正奇數。或者等於0,由引數sigma的乘機決定。
  • sigmaX – 高斯核心在X方向的標準偏差。
  • sigmaY – 高斯核心在Y方向的標準偏差。如果sigmaY為0,他將和sigmaX的值相同,如果他們都為0,那麼他們由ksize.widthksize.height計算得出。
  • borderType – 用於判斷影象邊界的模式。
  • 為了結果的正確性著想,最好是把第三個引數Size,第四個引數sigmaX和第五個引數sigmaY全部指定到。

相關例項:
#include<opencv2/core/core.hpp>  
#include<opencv2/highgui/highgui.hpp>  
#include"opencv2/imgproc/imgproc.hpp"  
#include <stdio.h>  

using namespace cv;

/*
高斯模糊:void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT)
src – 輸入圖片,可以使是任意通道數,該函式對通道是獨立處理的,但是深度只能是CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.
dst – 輸出圖片,和輸入圖片相同大小和深度。
ksize – 高斯核心大小。ksize.width和ksize.height允許不相同但他們必須是正奇數。或者等於0,由引數sigma的乘機決定。
sigmaX – 高斯核心在X方向的標準偏差。
sigmaY – 高斯核心在Y方向的標準偏差。如果sigmaY為0,他將和sigmaX的值相同,如果他們都為0,那麼他們由ksize.width和ksize.height計算得出。
borderType – 用於判斷影象邊界的模式。

*為了結果的正確性著想,最好是把第三個引數Size,第四個引數sigmaX和第五個引數sigmaY全部指定到。
**/

int main() {
	cvNamedWindow("高斯模糊原圖", 0);
	cvNamedWindow("高斯模糊效果圖",0);

	Mat imageSrc = imread("game.jpg");
	imshow("高斯模糊原圖", imageSrc);
	Mat imageChange;

	//高斯模糊處理
	GaussianBlur(imageSrc, imageChange, Size(7, 7), 0, 0);
	//顯示效果圖  
	imshow("高斯模糊效果圖", imageChange);

	waitKey(6000 * 100);
}

效果圖: