Opencv Image Filtering 学习

#include "stdafx.h"
#include "ImageFiltering.h"
using namespace cv;
ImageFiltering::ImageFiltering()
{
}

ImageFiltering::~ImageFiltering()
{
}

void ImageFiltering::openCV_bilateralFilte(Mat src, Mat &dst)
{
	// 双边滤波 
	// 双边滤波器可以很好地减少不需要的噪声同时保持边缘的锐利。然而它的代价是速度比较慢
	// 双边滤波的两个sigmaColor、sigmaSpace值越大,滤波效果越明显,滤波后的图片也越像“卡通图片”
	// sigmaColor的值越大,就能混合邻域内像素值相差越大的像素点。
	// sigmaSpace 控件滤波器,值越大,邻域内的两个像素相互影响就越大。
	// d 滤波器的size——(d > 5)会非常慢,因此,在实时性较高时,建议size设为d = 5;d的值越大模糊效果越明显
	// 如果实时性不是那么高,可以将size——(d = 9)设置大一些。
	//  borderType 差值方式。

	// 注:当d大于0时,忽略sigmaSpace
	bilateralFilter(src,dst,9,150,0,BorderTypes::BORDER_CONSTANT);
}

// 归一化的均值滤波器
void ImageFiltering::openCV_blur(Mat src, Mat &dst)
{
	
	blur(src, dst, Size(7, 7), Point(-1, -1));

}
// 一般性的均值滤波器
void ImageFiltering::openCV_boxFilter(Mat src, Mat &dst)
{
	boxFilter(src, dst, src.depth(), Size(7, 7),Point(-1,-1),true);
}

void ImageFiltering::openCV_buildPyramid(Mat src, std::vector<Mat> &dst)
{
	// 对一副图像进行金字塔层积采样,采样层数由参数maxlevel决定
	buildPyramid(src, dst, 5);
}
void ImageFiltering::openCV_dilate(Mat src, Mat &dst)
{
	// 对图像进行膨胀操作
	// anchor 进行膨胀的锚点,默认以核的中心为锚点
	// kernel 膨胀的核
	// iterations 膨胀的次数
	Mat kernel = getStructuringElement(1,Size(3,3));
	Scalar scalar;
	dilate(src, dst, kernel, Point(-1, -1), 3, BorderTypes::BORDER_CONSTANT, scalar);
}
void ImageFiltering::openCV_erode(Mat src, Mat &dst)
{
	// 对图像进行腐蚀操作
	// anchor 进行腐蚀的锚点,默认以核的中心为锚点
	// kernel 腐蚀的核
	// iterations 腐蚀的次数
	Mat kernel = getStructuringElement(1, Size(3, 3));
	Sca
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值