1. 程式人生 > >《OpenCV3程式設計入門》第6章-學習筆記1-boxFilter函式——方框濾波--(程式碼例項)

《OpenCV3程式設計入門》第6章-學習筆記1-boxFilter函式——方框濾波--(程式碼例項)

目錄

回顧基本操作和引數選項:

具體程式碼操作:


 回顧基本操作和引數選項:

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

具體程式碼操作:

//-----------------------------------【標頭檔案包含部分】---------------------------------------
//     描述:包含程式所依賴的標頭檔案
//----------------------------------------------------------------------------------------------
#include "opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include"opencv2/imgproc/imgproc.hpp"

//-----------------------------------【名稱空間宣告部分】---------------------------------------
//     描述:包含程式所使用的名稱空間
//----------------------------------------------------------------------------------------------- 
using namespace cv;

//-----------------------------------【main( )函式】--------------------------------------------
//     描述:控制檯應用程式的入口函式,我們的程式從這裡開始
//-----------------------------------------------------------------------------------------------
int main()
{
	//載入原圖
	Mat image = imread("1.jpg");

	//建立視窗
	namedWindow("均值濾波【原圖】");
	namedWindow("均值濾波【效果圖3*3】");

	//顯示原圖
	imshow("均值濾波【原圖】", image);

	//進行濾波操作
	Mat out;
	boxFilter(image, out, -1, Size(3,3 ));

	//顯示效果圖
	imshow("均值濾波【效果圖3*3】", out);

	namedWindow("均值濾波【效果圖10*10】");
	//進行濾波操作
	Mat out1;
	boxFilter(image, out1, -1, Size(10, 10));
	imshow("均值濾波【效果圖10*10】", out1);

	waitKey(0);
}

假如換成10*10