#include <QCoreApplication>
#include <iostream>
#include <fstream>
#include <opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#define _USE_MATH_DEFINES
#include <math.h>
//#define M_PI 3.14159265358979323846
int main(int argc, char *argv[])
{
cv::Mat srcImage = cv::imread("./test.jpg",cv::IMREAD_COLOR);
int width = srcImage.rows;
int height = srcImage.cols;
cv::Mat dstImage = cv::Mat::zeros(height,width,CV_8UC3);
//Prepare kernel
int k_size = 3;
int p = floor(k_size / 2);
//filtering
double v = 0;
for (int j = 0; j < height;j++)
{
for (int i = 0 ; i < width ; i++)
{
for (int c = 0; c<3; c++)
{
v = 0;
//将3*3的Kernel的各元素求和
for (int _j = -p;_j < p+1;_j++)
{
for (int _i = -p;_i < p+1;_i++)
{
if(((j+_j) >= 0) && ((i + _i) >= 0))
{
v += (double)srcImage.at<cv::Vec3b>(j+_j,i+_i)[c];
}
}
}
//求平均值
v /= k_size * k_size;
dstImage.at<cv::Vec3b>(j,i)[c] = v;
}
}
}
cv::imshow("SrcImage",srcImage);
cv::imshow("DstImage",dstImage);
std::cout << "END!" << std::endl;
cv::waitKey(0);
return 0;
}