#include <bits/stdc++.h>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void sobel(Mat src){
Mat grad_x, grad_y,abs_grad_x, abs_grad_y,sobel_dst;
Sobel( src, grad_x, CV_16S, 1, 0, 3, 1, 0, BORDER_DEFAULT );
convertScaleAbs( grad_x, abs_grad_x );
Sobel( src, grad_y, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT );
convertScaleAbs( grad_y, abs_grad_y );
addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, sobel_dst );
imshow("Sobel", sobel_dst);
}
void canny(Mat src){
Mat dst;
dst.create( src.size(), src.type());
Canny( src, dst, 3, 9,3 );
imshow("Canny", dst);
}
void laplace(Mat src){
Mat dst,abs_dst;
Laplacian( src, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT );
convertScaleAbs( dst, abs_dst );
imshow( "Laplace", abs_dst );
}
void boxfilter(Mat src){
Mat dst;
boxFilter(src, dst, -1,Size(5, 5));
imshow("BoxFilter", dst);
}
void medianblur(Mat src){
Mat dst;
medianBlur ( src, dst, 7);
imshow("MedianBlur", dst);
}
void bilateralfilter(Mat src){
Mat out;
bilateralFilter(src,out,25,25*2,25/2);
imshow("BilateralFilter",out);
}
int main( ){
Mat src = imread("head.jpg");
namedWindow("src"); imshow("src", src);
namedWindow("Sobel");sobel(src);
namedWindow("Canny");canny(src);
namedWindow("BoxFilter");boxfilter(src);
namedWindow("MedianBlur");medianblur(src);
namedWindow("BilateralFilter");bilateralfilter(src);
waitKey(0);
return 0;
}