1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
Mat srcImage, dstImage1, dstImage2, dstImage3, dstImage4, dstImage5;
int n_boxFilter = 6; //方框滤波
int n_blur = 10; //均值滤波
int n_gaussianBlur = 10; //高斯滤波
int n_medianBlur = 6; //中值滤波
int n_bilateralFilter = 10; //双边滤波
//回调函数声明
static void BoxFilter(int, void *);
static void Blur(int, void *);
static void GaussianBlur(int, void *);
static void MedianBlur(int, void *);
static void BilateralFilter(int, void *);
int main()
{
srcImage = imread("4.jpg");
if (!srcImage.data)
{
printf("Oh, no, SrcImage is error");
return -1;
}
dstImage1 = srcImage.clone();
dstImage2 = srcImage.clone();
dstImage3 = srcImage.clone();
dstImage4 = srcImage.clone();
dstImage5 = srcImage.clone();
namedWindow("SrcImage");
imshow("SrcImage", srcImage);
namedWindow("BoxFilter");
createTrackbar("box", "BoxFilter", &n_boxFilter, 40, BoxFilter);
BoxFilter(n_boxFilter, 0);
namedWindow("Blur");
createTrackbar("blur", "Blur", &n_blur, 40, Blur);
Blur(n_blur, 0);
namedWindow("GaussianBlur");
createTrackbar("gaussian", "GaussianBlur", &n_gaussianBlur, 40, GaussianBlur);
GaussianBlur(n_gaussianBlur, 0);
namedWindow("MedianBlur");
createTrackbar("median", "MedianBlur", &n_medianBlur, 50, MedianBlur);
MedianBlur(n_medianBlur, 0);
namedWindow("BilateralFilter");
createTrackbar("bilateral", "BilateralFilter", &n_bilateralFilter, 50, BilateralFilter);
BilateralFilter(n_bilateralFilter, 0);
while (char(waitKey(1) != '9')) {}
return 0;
}
static void BoxFilter(int, void *)
{
boxFilter(srcImage, dstImage1, -1, Size(n_boxFilter + 1, n_boxFilter + 1));
imshow("BoxFilter", dstImage1);
}
static void Blur(int, void *)
{
blur(srcImage, dstImage2, Size(n_blur + 1, n_blur + 1), Point(-1, -1));
imshow("Blur", dstImage2);
}
static void GaussianBlur(int, void *)
{
GaussianBlur(srcImage, dstImage3, Size(n_gaussianBlur * 2 + 1, n_gaussianBlur * 2 + 1), 0, 0);
imshow("n_gaussianBlur", 0);
}
static void MedianBlur(int, void *)
{
medianBlur(srcImage, dstImage4, n_medianBlur * 2 + 1);
imshow("n_medianBlur", 0);
}
static void BilateralFilter(int, void *)
{
bilateralFilter(srcImage, dstImage5, n_bilateralFilter, n_bilateralFilter * 2, n_bilateralFilter / 2);
imshow("n_bilateralFilter", 0);
}
|