65 lines
1.6 KiB
C++
65 lines
1.6 KiB
C++
/*
|
||
* ====================================================
|
||
|
||
* 功能:滤镜。目前包括锐化、加强锐化、模糊和加强模糊
|
||
* 作者:刘丁维
|
||
* 生成时间:2020/4/21
|
||
* 最近修改时间:2020/4/21 v1.0
|
||
2020/7/17 v1.1 增加双边滤波(BilateralFilter)效果,用于实现“背景平滑”功能;
|
||
2020/11/30 v1.2 增加高斯模糊(GaussianBlur)
|
||
2021/07/21 v1.2.1 增加增亮锐化(BrightSharp)
|
||
2021/10/19 v1.2.2 调整增亮锐化参数
|
||
* 版本号:v1.2.2
|
||
|
||
* ====================================================
|
||
*/
|
||
|
||
|
||
#ifndef IMAGE_APPLY_FILTER_H
|
||
#define IMAGE_APPLY_FILTER_H
|
||
|
||
#include "ImageApply.h"
|
||
|
||
class CImageApplyFilter : public CImageApply
|
||
{
|
||
public:
|
||
enum FilterMode
|
||
{
|
||
None,
|
||
Sharpen, //锐化
|
||
Sharpen_More, //进一步锐化
|
||
AverBlur, //模糊
|
||
AverBlur_More, //进一步模糊
|
||
BilateralFilter, //双边滤波--背景平滑,减少复杂背景的色彩数量,利于jpg等压缩比例
|
||
GaussianBlur,
|
||
BrightSharp //5 * 5提亮锐化
|
||
};
|
||
|
||
/*
|
||
* sharpentype [in]:滤镜模式
|
||
*/
|
||
CImageApplyFilter(FilterMode type, int kSize = 30);
|
||
|
||
virtual ~CImageApplyFilter();
|
||
|
||
virtual void apply(cv::Mat& pDib, int side);
|
||
|
||
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
|
||
private:
|
||
void averblur(cv::Mat& src, int kSize);
|
||
|
||
void sharpen(cv::Mat& src, float kSize);
|
||
|
||
void brightSharp(cv::Mat& src);
|
||
|
||
void bilateralFilter(cv::Mat& src, double kernel);
|
||
|
||
void gaussianBlur(cv::Mat src, int kSize);
|
||
private:
|
||
int m_type;
|
||
float m_kSize;
|
||
double m_kernel;
|
||
};
|
||
|
||
#endif // !IMAGE_APPLY_SHARPEN_H
|