#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
int main()
{
// Read input image
cv::Mat image= cv::imread("bfg.jpg",0);
if (!image.data)
return 0;
// Display the image
cv::namedWindow("Original Image");
cv::imshow("Original Image",image);
cv::Mat reducedImage; // to contain reduced image
cv::pyrDown(image, reducedImage); // reduce image size by half
cv::namedWindow("reducedImage");
cv::imshow("reducedImage", reducedImage);
cv::imwrite("reducedImage.jpg", reducedImage);
/ //高斯滤波
cv::Mat result;
cv::GaussianBlur(image,result,cv::Size(5,5),1.5);//滤波内核图为5X5
// Display the blurred image
cv::namedWindow("Gaussian filtered Image");
cv::imshow("Gaussian filtered Image",result);
cv::imwrite("Gaussian filtered Image.jpg", result);
// Get the gaussian kernel (1.5),获得高斯函数的f=Ae*exp(-x*x/2/sigama/sigama)的值,区间为{-4,-3,-2,-1,0,1,...,4}
cv::Mat gauss= cv::getGaussianKernel(9,1.5,CV_32F);//设置高斯滤波参数值sigama和滤波区间
// Display kernel values
cv::Mat_<float>::const_iterator it= gauss.begin<float>();
cv::Mat_<float>::const_iterator itend= gauss.end<float>();
std::cout << "[";
for ( ; it!= itend; ++it) {
std::cout << *it << " ";
}
std::cout << "]" << std::endl;
// Get the gaussian kernel (0.5)
gauss= cv::getGaussianKernel(9,0.5,CV_32F);
// Display kernel values
it= gauss.begin<float>();
itend= gauss.end<float>();
std::cout << "[";
for ( ; it!= itend; ++it) {
std::cout << *it << " ";
}
std::cout << "]" << std::endl;
// Get the gaussian kernel (2.5)
gauss= cv::getGaussianKernel(9,2.5,CV_32F);
// Display kernel values
it= gauss.begin<float>();
itend= gauss.end<float>();
std::cout << "[";
for ( ; it!= itend; ++it) {
std::cout << *it << " ";
}
std::cout << "]" << std::endl;
// Get the Deriv kernel (2.5)
cv::Mat kx, ky;
cv::getDerivKernels(kx,ky,2,2,7,true);
// Display kernel values
cv::Mat_<float>::const_iterator kit= kx.begin<float>();
cv::Mat_<float>::const_iterator kitend= kx.end<float>();
std::cout << "[";
for ( ; kit!= kitend; ++kit) {
std::cout << *kit << " ";
}
std::cout << "]" << std::endl;
// Blur the image with a mean filter
cv::blur(image,result,cv::Size(5,5));
// Display the blurred image
cv::namedWindow("Mean filtered Image");
cv::imshow("Mean filtered Image",result);
cv::imwrite("Mean filtered Image.jpg", result);
// Read input image with salt&pepper noise
image= cv::imread("bfg.jpg",0);
if (!image.data)
return 0;
// Display the S&P image
cv::namedWindow("S&P Image");
cv::imshow("S&P Image",image);
// Blur the image with a mean filter 简单模糊
cv::blur(image,result,cv::Size(5,5));
// Display the blurred image
cv::namedWindow("Mean filtered S&P Image");
cv::imshow("Mean filtered S&P Image",result);
cv::imwrite("Mean filtered S&P.jpg", result);
/ // Applying a median filter//中值滤波
cv::medianBlur(image,result,5);
// Display the blurred image
cv::namedWindow("Median filtered S&P Image");
cv::imshow("Median filtered S&P Image",result);
cv::imwrite("Median filtered S&P Image.jpg", result);
cv::waitKey();
return 0;
}
一起学opencv (九) 滤波
最新推荐文章于 2023-09-15 18:21:31 发布