OpenCV學習筆記(五):線性濾波-方框、均值、高斯:boxFilter(),blur(),GaussianBlur()
線性濾波:即多個信號之和的響應和它們各自響應之和相等。
參考:
https://blog.csdn.net/poem_qianmo/article/details/22745559
代碼:
#include
<opencv2
/opencv
.hpp
>Mat g_srcImage
,g_dstImage1
,g_dstImage2
,g_dstImage3
;
int g_nBoxFilterValue
=3;
int g_nMeanBlurValue
=3;
int g_nGaussianBlurValue
=3; using namespace cv
;
using namespace std
;int main(int argc
, char *argv
[])
{g_srcImage
= imread( "F:/C++/2. OPENCV 3.1.0/TEST/1.jpg", 1 );if( !g_srcImage
.data
){ printf("Oh,no,讀取srcImage錯誤~! \n"); return false; }g_dstImage1
= g_srcImage
.clone( );g_dstImage2
= g_srcImage
.clone( );g_dstImage3
= g_srcImage
.clone( );g_dstImage4
= g_srcImage
.clone( );g_dstImage5
= g_srcImage
.clone( );imshow("【<0>原圖窗口】",g_srcImage
);namedWindow("【<1>方框濾波】", 1);createTrackbar("內核值:", "【<1>方框濾波】", &g_nBoxFilterValue
, 40, on_BoxFilter
);on_BoxFilter(g_nBoxFilterValue
,0);namedWindow("【<2>均值濾波】", 1);createTrackbar("內核值:", "【<2>均值濾波】",&g_nMeanBlurValue
, 40,on_MeanBlur
);on_MeanBlur(g_nMeanBlurValue
,0);namedWindow("【<3>高斯濾波】", 1);createTrackbar("內核值:", "【<3>高斯濾波】",&g_nGaussianBlurValue
, 40,on_GaussianBlur
);on_GaussianBlur(g_nGaussianBlurValue
,0);cout
<<endl
<<"\t運行成功,請調整滾動條觀察圖像效果~\n\n"<<"\t按下“q”鍵時,程序退出。\n";while(char(waitKey(1)) != 'q') {}return 0
}
static void on_BoxFilter(int, void *)
{boxFilter( g_srcImage
, g_dstImage1
, -1,Size( g_nBoxFilterValue
+1, g_nBoxFilterValue
+1),Point(-1,-1),false);imshow("【<1>方框濾波】", g_dstImage1
);
}
static void on_MeanBlur(int, void *)
{blur( g_srcImage
, g_dstImage2
, Size( g_nMeanBlurValue
+1, g_nMeanBlurValue
+1), Point(-1,-1));imshow("【<2>均值濾波】", g_dstImage2
);
}
static void on_GaussianBlur(int, void *)
{GaussianBlur( g_srcImage
, g_dstImage3
, Size( g_nGaussianBlurValue
*2+1, g_nGaussianBlurValue
*2+1 ), 0, 0);imshow("【<3>高斯濾波】", g_dstImage3
);
}
結果:
總結
以上是生活随笔為你收集整理的OpenCV学习笔记(五):线性滤波-方框、均值、高斯:boxFilter(),blur(),GaussianBlur()的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。