#pragma once #include "ImageApply.h" class CAutoCrop : public CImageApply { public: CAutoCrop( bool bFill = true,bool bautoDeScrew = true,bool bCrop = true,SIZE dstsize = CSize(0, 0),SIZE originsize=CSize(0,0),int tw_pixType=2); virtual ~CAutoCrop(); void apply(cv::Mat& dib,int side); void setFill(bool val); bool getFill(); void setCrop(bool val); bool getCrop(); private: enum RC_TYPE { RC_INVALID = 0x0, RC_ROTATED = 0x1, RC_CUT = 0x2, RC_BLACK_BACKGROUD = 0x4, RC_SHARPING = 0x8 }; void sharpen(cv::Mat& Mat); cv::Point2f warpPoint(cv::Point p, const cv::Mat& warp_Mat); void rotated_and_cut(cv::Mat &src, cv::Mat& dst,int flags,double threshold,int noise,int indent); void fillBlackBackGround(cv::Mat& src, std::vector points, float indent); void polyIndent(std::vector& points, float indent); void fill_poly(cv::Mat& src, const std::vector>& contours, const cv::Scalar& color, int lineType = 8, int shift = 0, cv::Point offset = cv::Point()); cv::RotatedRect getBoundingRect(const std::vector& contour); std::vector getMaxContour(const std::vector>& contours, const std::vector& hierarchy); void findContours(const cv::Mat& src, std::vector>& contours, std::vector& hierarchy, int retr = cv::RETR_LIST, int method = cv::CHAIN_APPROX_SIMPLE, cv::Point offset = cv::Point(0, 0)); void threshold_Mat(const cv::Mat& src, cv::Mat& dst, double thre, int noise); cv::Mat transforColor(const cv::Mat& src); void MyConvexHull(const std::vector& src, std::vector& dst, bool clockwise = false); bool m_bCrop; bool m_bFill; bool m_bAutoDescrew; SIZE m_dstSize; SIZE m_originSize; int tw_pixType; };