opencv的几种滤波算子
来源:互联网 发布:全民枪战挂机软件 编辑:程序博客网 时间:2024/04/29 23:19
1、 模糊函数blur滤波
//! a synonym for normalized box filter
CV_EXPORTS_W void blur( InputArray src, OutputArray dst,
Size ksize, Point anchor=Point(-1,-1),
int borderType=BORDER_DEFAULT );
参数说明:
InputArray 表示输入图像Mat类型src,
OutputArray表示输出图像Mat类型dst,
Size表示卷积核大小,此参数决定模糊程度,Size(x,y)其中x,y取值越大,表示模糊程度越深,而且x,y表示为奇数。
Point 表示锚定的位置,也就是卷积核替换重叠像素中的哪个位置,此参数一般使用Point(-1,-1)表示使用卷积核的中心位置。
Type表示对边缘的处理方法,一般默认为4,
Mat src,dst;
src = imread("C:\\Users\\934554314\\Desktop\\src.jpg", 1);
cvtColor(src, src, CV_BGR2GRAY);
namedWindow("src", WINDOW_NORMAL);
imshow("src", src);
blur(src, dst, Size(5, 5), Point(-1, -1), 4);
namedWindow("dst", WINDOW_NORMAL);
imshow("dst", dst);
waitKey(0);
return;
测试图片如下:
src = imread("C:\\Users\\934554314\\Desktop\\src.jpg", 1);
blur(src, dst, Size(30, 1), Point(-1, -1), 4);//X方向模糊,
src = imread("C:\\Users\\934554314\\Desktop\\src.jpg", 1);
blur(src, dst, Size(1, 30), Point(-1, -1), 4);//Y方向模糊,
2、高斯模糊函数GaussianBlur
CV_EXPORTS_W void GaussianBlur( InputArray src,
OutputArray dst, Size ksize,
double sigmaX, double sigmaY=0,
int borderType=BORDER_DEFAULT );
参数说明:SigmaX表示高斯方程中的X方向标准方差,
SigmaY表示高斯方程中的Y方向标准方差,
Type一般为默认值4;
Size表示高斯卷积核,必须是正奇数,SigmaX在当Size大小不为0 的时候从size大小计算,SigmaY在SigmaX不为零的时候从X计算、SigmaX为零的时候从Size大小中计算。
src = imread("C:\\Users\\934554314\\Desktop\\src.jpg", 1);
GaussianBlur(src, dst, Size(5, 5), 0, 0, 4);
3、中值滤波
src = imread("C:\\Users\\934554314\\Desktop\\src.jpg", 1);
medianblur(src,dst,5);
4、双边模糊函数bilateralFilter
//! smooths the image using bilateral filter
CV_EXPORTS_W void bilateralFilter( InputArray src, OutputArray dst, int d,
double sigmaColor, double sigmaSpace,
int borderType=BORDER_DEFAULT );
d表示双边滤波时候中心到周边像素的距离,
sigmacolor表示高斯核中颜色值标准方差
sigmaspace表示高斯核中空间的标准方差
Type一般为默认值4;
src = imread("C:\\Users\\934554314\\Desktop\\src.jpg", 1);
bilaterlFilter(src,dst,15,120,10,4);
5、滤波函数filter2D
CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth,
InputArray kernel, Point anchor=Point(-1,-1),
double delta=0, int borderType=BORDER_DEFAULT );
d表示输出图像的深度,-1表示跟输入图像深度相同
kernel表示自定义的Mat对象,卷积核或者算子,
Point表示锚定的位置。默认为Point(-1,-1);
delta表示卷积处理之后的每个像素是否加上常量delta,一般默认为0;
Type一般为默认值4;
//图像的模糊
int ksize = 15;
Mat kernel = Mat::ones(ksize, ksize, CV_32F) / (float)(ksize*ksize);
filter2D(src, dst, -1, kernel, Point(-1, -1), 0.0, 4);
//图像的边缘提取
Mat kernel1 = (Mat_<char>(3, 3) << -1, -1, -1, -1, 8,-1, -1, -1, -1);
filter2D(src, dst, -1, kernel1, Point(-1, -1), 0.0, 4);
//图像的锐化
Mat kernel1 = (Mat_<char>(3, 3) << -1, -1, -1, -1, 9,-1, -1, -1, -1);
filter2D(src, dst, -1, kernel1, Point(-1, -1), 0.0, 4);
//robot算子
Mat kernel1 = (Mat_<char>(2, 2) << -1,0,0,1);
filter2D(src, dst, -1, kernel1, Point(-1, -1), 0.0, 4);
//sobel算子
Mat kernel1 = (Mat_<char>(3,3) << 1,2,1,0,0,0,-1,-2,-1);
filter2D(src, dst, -1, kernel1, Point(-1, -1), 0.0, 4);
- opencv的几种滤波算子
- OpenCV-滤波算子(一)
- OpenCV 学习(几种基本的低通滤波)
- learning opencv 2 几种滤波的应用场景
- opencv的Laplace算子
- 滤波算子
- opencv调用摄像头+灰度图+高斯滤波+Canny算子
- 图像滤波与创建预定义的滤波算子
- 【拜小白opencv】34-图像平滑处理,6种滤波总结的综合示例【盒式滤波、均值滤波、高斯滤波、中值滤波、双边滤波、导向滤波】
- OpenCV - 三种线性滤波的使用
- MatLab自编的均值滤波、中值滤波、高斯滤波三种滤波算子,可以直接调用 图像处理函数
- 几种经典的滤波算法
- 几种软件滤波算法的比较
- 几种经典的滤波算法(转)
- 几种经典的滤波算法
- 几种经典的滤波算法
- 几种时域滤波的比较
- AD滤波的几种简单方法
- 有关于git访问bitbacket的ssh key配置以及出现的小问题
- 1055. The World's Richest (25)
- js JavaScript Validator 关闭
- 代码块
- c语言中的pow(x, y)的使用
- opencv的几种滤波算子
- Deprecated: main(): The Mongo class is deprecated, please use the MongoClient class in
- KNN从原理到实现
- leetcode解题之153&154. Find Minimum in Rotated Sorted Array版(在旋转的数组中查找最小数字)
- 【面经】深信服测试实习生面经
- Android开发技术资料
- linux 安装配置zookeeper
- ipvs负载均衡(五)代码结构简易分析
- linux中虚拟网卡配置