一、均值滤波blur()
原型
void blur(
InputArray src,
OutputArrary dst,
Size ksize,
Point anchor=Point(-1,-1),
int bordeType=BORDER_DEFAULE
);
参数
- src:输入图像
- dst:输出图像。要和src一样的尺寸。
- ksize:核。用
Size(w,h)
就行 - anchor:锚的位置。默认(-1,-1),表示锚位于中心
- borderType:用于推断图像外部像素的某种边界模式。不管。
例子
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
String windowNames[]={"Src","Dst"};
String trackbarNames[]={"Blur"};
Mat g_srcImage;
Mat g_dstImage;
int g_dstImageValue=1;
const int g_dstImageValueMax=200;
void onChange(int,void*)
{
if(g_dstImageValue<=0) g_dstImageValue=1;
blur(g_srcImage,g_dstImage,Size(g_dstImageValue,g_dstImageValue));
//show picture
imshow(windowNames[0],g_srcImage);
imshow(windowNames[1],g_dstImage);
}
int main()
{
//read picture
g_srcImage=imread("3.jpg");
//create window
namedWindow(windowNames[0],WINDOW_NORMAL);
namedWindow(windowNames[1],WINDOW_NORMAL);
//createTrackbar
createTrackbar(trackbarNames[0],windowNames[1],&g_dstImageValue,g_dstImageValueMax,onChange);
//call onChange()
onChange(0,0);
waitKey();
return 0;
}
二、高斯滤波GaussianBlur()
原型
void GaussianBlur(
InputArray src,
OutputArrary dst,
Size ksize,
double sigmaxX,
double sigmaY=0,
int bordeType=BORDER_DEFAULE
);
参数
- src:输入图像
- dst:输出图像。要和src一样的尺寸。
- ksize:核。用
Size(w,h)
就行。但要求w和h必须为正奇数或零 - sigmaX:表示高斯核函数在X方向的标准偏差。填0.0就行
- sigmaY:表示高斯核函数在X方向的标准偏差。若sigmaY为0(默认),它的值就等于sigmaX。
- borderType:用于推断图像外部像素的某种边界模式。不管。
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
String windowNames[]={"Src","Dst"};
String trackbarNames[]={"Blur"};
Mat g_srcImage;
Mat g_dstImage;
int g_dstImageValue=1;
const int g_dstImageValueMax=200;
void onChange(int,void*)
{
if(g_dstImageValue<=0) g_dstImageValue=1;
if(g_dstImageValue%2==0) g_dstImageValue+=1;
GaussianBlur(g_srcImage,g_dstImage,Size(g_dstImageValue,g_dstImageValue),0.0,0.0);
//show picture
imshow(windowNames[0],g_srcImage);
imshow(windowNames[1],g_dstImage);
}
int main()
{
//read picture
g_srcImage=imread("M.jpg",0);
//create window
namedWindow(windowNames[0],WINDOW_NORMAL);
namedWindow(windowNames[1],WINDOW_NORMAL);
//createTrackbar
createTrackbar(trackbarNames[0],windowNames[1],&g_dstImageValue,g_dstImageValueMax,onChange);
//call onChange()
onChange(0,0);
waitKey();
return 0;
}