code block:
#include "opencv2/opencv.hpp" #include <iostream> using namespace cv; using namespace std; #define MAX_KERNEL_SIZE 40 Mat g_srcImage, g_dstImage1 ,g_dstImage2, g_dstImage3,g_dstImage4,g_dstImage5; int g_nBoxfilterValue = 3; int g_nBlurValue = 3; int g_nGaussianBlurValue =3 ; int g_medianBlurValue = 3; int g_bliateralFilterValue = 3; string boxFilter_window = "Box Filter"; string blurFilter_window = "Blur Filter"; string GaussianBlur_window = "Gaussian Filter"; string scrollbar_title = "Kernel size"; string medianBlur_window = "Median Blur"; string bilateralFilter_window = "Bialteral Filter" ; static void callback_boxfilter(int ,void *); static void callback_blur(int ,void *); static void callback_GaussianBlur(int ,void *); static void callback_medianBlur(int,void *); static void callback_BialteralFilter(int, void *); int main( ) { string pic_path = "pathname"; string src_window = "Source Pic"; g_srcImage = imread(pic_path,1); if(!g_srcImage.data) { cout << "No data in this picture" << endl;return 0;} 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(); /*show src picture*/ namedWindow(src_window,1); imshow(src_window,g_srcImage); //box filter namedWindow(boxFilter_window,1); createTrackbar(scrollbar_title,boxFilter_window,&g_nBoxfilterValue,MAX_KERNEL_SIZE,callback_boxfilter); callback_boxfilter(g_nBoxfilterValue,0); imshow(boxFilter_window,g_dstImage1); //Blur filter namedWindow(blurFilter_window,1); createTrackbar(scrollbar_title,blurFilter_window,&g_nBlurValue,MAX_KERNEL_SIZE,callback_blur); callback_blur(g_nBlurValue,0); imshow(blurFilter_window,g_dstImage2); //Guassian filter namedWindow(GaussianBlur_window,1); createTrackbar(scrollbar_title,GaussianBlur_window,&g_nGaussianBlurValue,MAX_KERNEL_SIZE,callback_GaussianBlur); callback_GaussianBlur(g_nGaussianBlurValue,0); imshow(GaussianBlur_window,g_dstImage3); //median blur namedWindow(medianBlur_window,1); createTrackbar(scrollbar_title,medianBlur_window,&g_medianBlurValue,MAX_KERNEL_SIZE,callback_medianBlur); callback_medianBlur(g_medianBlurValue,0); imshow(medianBlur_window,g_dstImage4); //bilateralFilter namedWindow(bilateralFilter_window,1); createTrackbar(scrollbar_title,bilateralFilter_window,&g_bliateralFilterValue,MAX_KERNEL_SIZE,callback_BialteralFilter); callback_BialteralFilter(g_bliateralFilterValue,0); imshow(bilateralFilter_window,g_dstImage5); while(char(waitKey(1)) != 'q') {} return 0; } static void callback_boxfilter(int ,void *){ boxFilter(g_srcImage,g_dstImage1,-1,Size(g_nBoxfilterValue+1,g_nBoxfilterValue+1)); imshow(boxFilter_window,g_dstImage1); } static void callback_blur(int ,void *){ blur(g_srcImage,g_dstImage2,Size(g_nBlurValue+1,g_nBlurValue+1)); imshow(blurFilter_window,g_dstImage2); } static void callback_GaussianBlur(int ,void *){ g_nGaussianBlurValue = g_nGaussianBlurValue &-1 ; if(g_nGaussianBlurValue>40) {g_nGaussianBlurValue -=2;} //cout << g_nGaussianBlurValue <<endl; if(g_nGaussianBlurValue%2 == 1){GaussianBlur(g_srcImage,g_dstImage3,Size(g_nGaussianBlurValue,g_nGaussianBlurValue),0,0);} imshow(GaussianBlur_window,g_dstImage3); } static void callback_medianBlur(int,void *){ g_medianBlurValue = g_medianBlurValue &-1 ; if(g_medianBlurValue>40) {g_medianBlurValue -=2;} if(g_medianBlurValue%2 == 1) medianBlur(g_srcImage,g_dstImage4,g_medianBlurValue); imshow(medianBlur_window,g_dstImage4); } static void callback_BialteralFilter(int , void *){ bilateralFilter(g_srcImage,g_dstImage5,g_bliateralFilterValue,g_bliateralFilterValue*2,g_bliateralFilterValue/2); imshow(bilateralFilter_window,g_dstImage5); }