1. 程式人生 > >OpenCV入門:平滑處理 — 方框濾波

OpenCV入門:平滑處理 — 方框濾波

平滑處理 — 方框濾波

相關函式:

C++: void boxFilter(InputArray src,OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1,-1), boolnormalize=true, int borderType=BORDER_DEFAULT )

引數解析:

  • 第一個引數,InputArray型別的src,輸入影象,即源影象,填Mat類的物件即可。該函式對通道是獨立處理的,且可以處理任意通道數的圖片,但需要注意,待處理的圖片深度應該為CV_8U, CV_16U, CV_16S, CV_32F 以及 CV_64F之一。
  • 第二個引數,OutputArray型別的dst,即目標影象,需要和源圖片有一樣的尺寸和型別。
  • 第三個引數,int型別的ddepth,輸出影象的深度,-1代表使用原圖深度,即src.depth()。
  • 第四個引數,Size型別(對Size型別稍後有講解)的ksize,核心的大小。一般這樣寫Size( w,h )來表示核心的大小( 其中,w 為畫素寬度, h為畫素高度)。Size(3,3)就表示3x3的核大小,Size(5,5)就表示5x5的核大小
  • 第五個引數,Point型別的anchor,表示錨點(即被平滑的那個點),注意他有預設值Point(-1,-1)。如果這個點座標是負值的話,就表示取核的中心為錨點,所以預設值Point(-1,-1)表示這個錨點在核的中心。
  • 第六個引數,bool型別的normalize,預設值為true,一個識別符號,表示核心是否被其區域歸一化(normalized)了。
  • 第七個引數,int型別的borderType,用於推斷影象外部畫素的某種邊界模式。有預設值BORDER_DEFAULT,我們一般不去管它。
相關例項:

#include<opencv2/core/core.hpp>  
#include<opencv2/highgui/highgui.hpp>  
#include"opencv2/imgproc/imgproc.hpp"  
#include <stdio.h>  

using namespace cv;

/*
方框濾波: void boxFilter(InputArray src,OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1,-1), boolnormalize=true, int borderType=BORDER_DEFAULT )

引數解析:
第一個引數,InputArray型別的src,輸入影象,即源影象,填Mat類的物件即可。該函式對通道是獨立處理的,且可以處理任意通道數的圖片,但需要注意,待處理的圖片深度應該為CV_8U, CV_16U, CV_16S, CV_32F 以及 CV_64F之一。
第二個引數,OutputArray型別的dst,即目標影象,需要和源圖片有一樣的尺寸和型別。
第三個引數,int型別的ddepth,輸出影象的深度,-1代表使用原圖深度,即src.depth()。
第四個引數,Size型別(對Size型別稍後有講解)的ksize,核心的大小。一般這樣寫Size( w,h )來表示核心的大小( 其中,w 為畫素寬度, h為畫素高度)。Size(3,3)就表示3x3的核大小,Size(5,5)就表示5x5的核大小
第五個引數,Point型別的anchor,表示錨點(即被平滑的那個點),注意他有預設值Point(-1,-1)。如果這個點座標是負值的話,就表示取核的中心為錨點,所以預設值Point(-1,-1)表示這個錨點在核的中心。
第六個引數,bool型別的normalize,預設值為true,一個識別符號,表示核心是否被其區域歸一化(normalized)了。
第七個引數,int型別的borderType,用於推斷影象外部畫素的某種邊界模式。有預設值BORDER_DEFAULT,我們一般不去管它。
**/

int main() {
	cvNamedWindow("方框濾波原圖", 0);
	cvNamedWindow("方框濾波效果圖",0);

	Mat imageSrc = imread("game.jpg");
	imshow("方框濾波原圖", imageSrc);
	Mat imageChange;

	//方框濾波處理
	boxFilter(imageSrc, imageChange, -1, Size(7, 7));
	//顯示效果圖  
	imshow("方框濾波效果圖", imageChange);

	waitKey(6000 * 100);
}

效果圖: