#include<iostream>
#include<opencv/cv.h>
#include<opencv2/opencv.hpp>
using namespace std;
int main()
{
string imName = "lena.jpg";
cv::Mat im = cv::imread(imName);
cv::imshow("原图",im);
cv::Mat imGs = im.clone();
int kSize = 21;
cv::Mat outim;
cv::blur(imGs, outim, cv::Size(kSize, kSize), cv::Point(-1,-1));//均值平滑滤波
cv::imshow("blur", outim);
cv::GaussianBlur(imGs, outim, cv::Size(kSize, kSize), 0, 0); //高斯滤波
cv::imshow("gsblur", outim);
cv::medianBlur(imGs, outim, kSize); //中值滤波
cv::imshow("median", outim);
cv::bilateralFilter(imGs, outim, kSize, kSize * 2, kSize/2); //双变滤波
cv::imshow("bilateral", outim);
cout << imGs.type() << endl;
IplImage *inData = cvCreateImage(imGs.size(), 8, imGs.channels());
IplImage *outData = cvCreateImage(imGs.size(), 8, imGs.channels());
*inData = IplImage(imGs);
cvSmooth(inData, outData, 4, 0);//双边滤波平滑
cv::Mat o = cv::cvarrToMat(outData);
cv::imshow("smooth", o);
cv::waitKey(0);
return 0;
}
仅此作为笔记。