twain3.0/huagao/ImageProcess/ImageApplyBWBinaray.h

147 lines
3.0 KiB
C
Raw Normal View History

2020-06-20 03:17:06 +00:00
//#ifndef IMAGE_APPLY_BW_BINARAY_H
//#define IMAGE_APPLY_BW_BINARAY_H
//
//#include "ImageApply.h"
//
//class CImageApplyBWBinaray:public CImageApply
//{
//public:
//
// enum class ThresholdType
// {
// THRESH_BINARY = 0,
// THRESH_OTSU,
//
// ADAPTIVE_GAUSSIAN,
// ADAPTIVE_MEAN,
//
// ERROR_DIFFUSION
// };
//
// CImageApplyBWBinaray(ThresholdType type, int threshold = 180, int blockSize = 25, int constant = 5);
//
// CImageApplyBWBinaray();
//
// virtual ~CImageApplyBWBinaray(void);
//
// virtual void apply(cv::Mat& pDib,int side);
//
// virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
//
// double getThreshold() { return m_threshold; }
//
// ThresholdType getThresholdType() { return m_type; }
//
// int getBlockSize() { return m_blockSize; }
//
// double getConstant() { return m_constant; }
//
// void setThreshold(double value) { m_threshold = value; }
//
// void setThresholdType(ThresholdType type) { m_type = type; }
//
// void setBlockSize(int value) { m_blockSize = value; }
//
// void setConstant(double value) { m_constant = value; }
//
//private:
//
// void errorDiffuse(cv::Mat& image);
//
//private:
// double m_threshold;
//
// ThresholdType m_type;
//
// int m_blockSize;
//
// double m_constant;
//
// uchar* m_table;
//};
//
//#endif //!IMAGE_APPLY_BW_BINARAY_H
//
/*
* ====================================================
* <EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>2020/4/21
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ʱ<EFBFBD>2020/4/21
* <EFBFBD><EFBFBD>ţ<EFBFBD>v1.0
* ====================================================
*/
#ifndef IMAGE_APPLY_BW_BINARAY_H
#define IMAGE_APPLY_BW_BINARAY_H
#include "ImageApply.h"
2020-06-20 03:17:06 +00:00
class CImageApplyBWBinaray :public CImageApply
{
public:
enum class ThresholdType
{
2020-06-20 03:17:06 +00:00
THRESH_BINARY = 0, //<2F><>ͳ<EFBFBD><CDB3>ֵ<EFBFBD><D6B5>
THRESH_OTSU, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
2020-06-20 03:17:06 +00:00
ADAPTIVE_GAUSSIAN, //<2F><>˹<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ֵ
ADAPTIVE_MEAN, //<2F><>ֵ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ֵ
2020-06-20 03:17:06 +00:00
ERROR_DIFFUSION //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ
};
2020-06-20 03:17:06 +00:00
/*
* type [in]:<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ģʽ
* threshold [in]:<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>THRESH_OTSUʱ<EFBFBD><EFBFBD>Ч
* blockSize [in]:ADAPTIVE_GAUSSIAN<EFBFBD><EFBFBD>ADAPTIVE_MEANģʽ<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ֲ<EFBFBD><EFBFBD>۲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
* constant [in]:ADAPTIVE_GAUSSIAN<EFBFBD><EFBFBD>ADAPTIVE_MEANģʽ<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>blockSize<EFBFBD>γɱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ֲ<EFBFBD>ɸѡ<EFBFBD><EFBFBD>ֵ
*/
CImageApplyBWBinaray(ThresholdType type, int threshold = 120, int blockSize = 25, int constant = 5);
CImageApplyBWBinaray();
virtual ~CImageApplyBWBinaray(void);
2020-06-20 03:17:06 +00:00
virtual void apply(cv::Mat& pDib, int side);
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
double getThreshold() { return m_threshold; }
ThresholdType getThresholdType() { return m_type; }
int getBlockSize() { return m_blockSize; }
double getConstant() { return m_constant; }
void setThreshold(double value) { m_threshold = value; }
void setThresholdType(ThresholdType type) { m_type = type; }
void setBlockSize(int value) { m_blockSize = value; }
void setConstant(double value) { m_constant = value; }
private:
void errorDiffuse(cv::Mat& image);
private:
double m_threshold;
ThresholdType m_type;
int m_blockSize;
double m_constant;
uchar* m_table;
};
#endif //!IMAGE_APPLY_BW_BINARAY_H