code_device/hgdriver/ImageProcess/ImageApplyAutoCrop.h

140 lines
6.3 KiB
C
Raw Normal View History

2022-07-29 08:41:34 +00:00
/*
* ====================================================
*
* 绿
* _020/4/21
* 2020/4/21 v1.0
2020/7/22 v1.1 maxContourPC端暂时无需使用_
2020/10/16 v1.2 BUG
2020/10/28 v1.2.1 BUG
2020/10/28 v1.2.2 BUG
2020/10/29 v1.2.3 0°_
2020/11/30 v1.3.0 稿
2021/06/18 v1.3.1 noise
2021/07/01 v1.3.2 BUG
2021/07/08 v1.3.3
2021/07/08 v1.3.4
2021/07/09 v1.3.5 normalCrop机制m_isCrop m_isDesaskew m_isFillBlank均为false时可选用
2021/07/13 v1.3.6 normalCrop逻辑normalCrop为true时m_isCrop m_isDesaskew m_isFillBlank失效
2021/07/19 v1.3.7 仿INTER_LINEAR
2021/07/22 v1.3.8 BUG
2021/08/02 v1.3.9
2021/10/08 v1.3.10
2021/10/19 v1.3.11 0
2021/10/19 v1.3.12
2022/04/24 v1.4
2022/05/03 v1.4.1
2022/06/09 v1.4.2 稿threshold值0.5
2022/10/31 v1.5 DPI缩放参数fx,fy
2022/11/19 v1.5.1 稿BUG
2022/11/19 v1.5.2 稿BUG
* v1.5.2
2022-07-29 08:41:34 +00:00
* ====================================================
*/
#ifndef IMAGE_APPLY_AUTO_CROP_H
#define IMAGE_APPLY_AUTO_CROP_H
#include "ImageApply.h"
class CImageApplyDispersion;
2022-07-29 08:41:34 +00:00
class GIMGPROC_LIBRARY_API CImageApplyAutoCrop : public CImageApply
{
public:
CImageApplyAutoCrop();
/*
* isCrop [in]:使true自动裁剪false为固定裁剿
* isDesaskew [in]:使true自动纠偏false为不纠偏
* isFillBlank [in]:使true为填充false为不填充
* fixedSize [in]:isCrop为false时生效fixedSize大小输出紿
* isConvex [in]:,true为凸多边形填充false为凹多边形填充true
* isFillColor [in]:false为白色填充true为自适应文稿底色填充false
* threshold [in]:0, 255)访0
* noise [in]:noise宽度的背景竖条纹干扰访
* indent [in]:indent像素访
* normalCrop [in]:true时m_isCrop m_isDesaskew m_isFillBlank失效false
* dispersion [in]:true时false时不除色散true
* fx [in]:1.0
* fy [in]:1.0
2022-07-29 08:41:34 +00:00
*/
CImageApplyAutoCrop(bool isCrop, bool isDesaskew, bool isFillBlank, const cv::Size& fixedSize, bool isConvex = true,
bool isFillColor = false, double threshold = 40, int noise = 8, int indent = 5, bool normalCrop = false, bool dispersion = true, double fx = 1.0, double fy = 1.0);
2022-07-29 08:41:34 +00:00
virtual ~CImageApplyAutoCrop();
virtual void apply(cv::Mat& pDib, int side);
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
bool isAutoCrop() { return m_isCrop; }
bool isFillBlank() { return m_isFillBlank; }
bool isDesaskew() { return m_isDesaskew; }
bool isConvexHull() { return m_isConvexHull; }
cv::RotatedRect getROI() { return m_rect; }
double threshold() { return m_threshold; }
int noise() { return m_noise; }
int indent() { return m_indent; }
cv::Size fixedSize() { return m_fixedSize; }
const std::vector<cv::Point>& maxContour() { return m_maxContour; }
void setAutoCrop(bool enabled) { m_isCrop = enabled; }
void setFillBlank(bool enabled) { m_isFillBlank = enabled; }
void setDesaskew(bool enabled) { m_isDesaskew = enabled; }
void setConvexHull(bool convex) { m_isConvexHull = convex; }
void setThreshold(double value) { m_threshold = value; }
void setNoise(int value) { m_noise = value; }
void setIndent(int value) { m_indent = value; }
void setFixedSize(cv::Size size) { m_fixedSize = size; }
void setDispersion(bool enable) { m_isDispersion = enable; }
static void autoCrop_desaskew_fillBlank(cv::Mat& src, cv::Mat& dst, bool isAutoCrop, bool isDesaskew, bool isFillBlank, int dWidth, int dHeight,
bool isConvex = true, bool isColorBlank = false, double threshold = 40, int noise = 8, int indent = 5, bool isNormalCrop = false, bool dispersion = true,
double fx = 1.0, double fy = 1.0);
private:
static void myWarpAffine(cv::InputArray _src, cv::OutputArray _dst, cv::InputArray _M0, cv::Size dsize, int flags, int borderType, const cv::Scalar& borderValue);
static cv::Scalar getBackGroudColor(const cv::Mat& image, int threshold);
2022-07-29 08:41:34 +00:00
private:
bool m_isCrop;
bool m_isDesaskew;
bool m_isFillBlank;
bool m_isConvexHull;
bool m_isFillColor;
bool m_isDispersion;
double m_threshold;
int m_noise;
int m_indent;
bool m_normalCrop; //为true且m_isCrop m_isDesaskew m_isFillBlank均为false时生效固定裁切采用最传统的裁切方弿
cv::Size m_fixedSize;
cv::RotatedRect m_rect;
std::vector<cv::RotatedRect> m_rects;
std::vector<cv::Point> m_maxContour;
double m_fx;
double m_fy;
};
2022-07-29 08:41:34 +00:00
#endif // !IMAGE_APPLY_AUTO_CROP_H