Opencv线性滤波包含有高斯滤波、方框滤波和平均滤波,利用OpencvGUI提供的滑动条可以对窗口大小可以进行动态调试,这是一个非常有用的工具,尤其需要在线调试参数的时候。
// Fileter.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> using namespace cv; using namespace std; Mat srcImg,dstImg1,dstImg2,dstImg3; int boxFilterVal = 3; int GaussFilterVal = 3; int blurFilterVal = 3; void on_track_box(int,void*) { boxFilter(srcImg,dstImg1,-1,Size(boxFilterVal+1,boxFilterVal+1)); imshow("boxFilter",dstImg1); } void on_track_Gauss(int,void*) { GaussianBlur(srcImg,dstImg2,Size(GaussFilterVal*2+1,GaussFilterVal*2+1),0,0); imshow("GaussFilter",dstImg2); } void on_track_blur(int,void*) { blur(srcImg,dstImg3,Size(blurFilterVal+1,blurFilterVal+1)); imshow("blurFilter",dstImg3); } int _tmain(int argc, _TCHAR* argv[]) { srcImg = imread("d://bb.jpg",1); dstImg1 = srcImg.clone(); dstImg2 = srcImg.clone(); dstImg3 = srcImg.clone(); namedWindow("boxFilter"); createTrackbar("Value","boxFilter",&boxFilterVal,40,on_track_box); on_track_box(boxFilterVal,0); namedWindow("GaussFilter"); createTrackbar("Value","GaussFilter",&GaussFilterVal,40,on_track_Gauss); on_track_Gauss(GaussFilterVal,0); namedWindow("blurFilter"); createTrackbar("Value","blurFilter",&blurFilterVal,40,on_track_blur); on_track_blur(blurFilterVal,0); while(waitKey(1) != 'q'); return 0; }