#pragma once #include "IPreproc.h" #include #include "commondef.h" class CSizedetect : public IPreproc { public: explicit CSizedetect(int papaertype); virtual ~CSizedetect(void); virtual int preprocess(cv::Mat& mat,void* unused); void SetPapertype(int papertype); private: void rotate(float& x, float& y, float angle); void minAeaRect(const float* x, const float* y, int size, float& width, float& height); void fastMeasureSize(const unsigned char* data, int src_width, int src_height, int channels, float& dst_width, float& dst_height, int threshold = 40, int indent = 20, int step = 5); private: int m_papertype; int m_horThre; int m_verThre; std::map m_supportPaper={ {PaperSize::G400_A3,HGSize{2338,3307}}, {PaperSize::G400_A4,HGSize{1653,2338}}, {PaperSize::G400_A4R,HGSize{2338,1653}}, {PaperSize::G400_A5,HGSize{1165,1653}}, {PaperSize::G400_A5R,HGSize{1653,1165}}, {PaperSize::G400_A6,HGSize{826,1165}}, {PaperSize::G400_A6R,HGSize{1165,826}}, {PaperSize::G400_B4,HGSize{1969,2780}}, {PaperSize::G400_B5,HGSize{1385,1968}}, {PaperSize::G400_B5R,HGSize{1968,1385}}, {PaperSize::G400_B6R,HGSize{1433,1007}}, {PaperSize::G400_B6,HGSize{1007,1433}}, {PaperSize::G400_DOUBLELETTER,HGSize{2200,3400}}, {PaperSize::G400_LEGAL,HGSize{1700,2800}}, {PaperSize::G400_LETTER,HGSize{1700,2198}}, {PaperSize::G400_LETTERR,HGSize{2198,1700}}, {PaperSize::G400_LONGLETTER,HGSize{2040,2640}}, {PaperSize::G400_MAXSIZE,HGSize{2338,8189}} }; };