2021-11-20 03:09:04 +00:00
|
|
|
|
/*
|
|
|
|
|
* ====================================================
|
|
|
|
|
|
|
|
|
|
* <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/11/21
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣺2020/05/12 v1.0
|
|
|
|
|
* 2020/11/17 v1.1
|
|
|
|
|
* 2021/09/06 v1.2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>϶<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>50<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ100<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><EFBFBD>
|
|
|
|
|
* 2021/11/03 v1.3 <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>쳬<EFBFBD><EFBFBD>10<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 2021/11/04 v1.4 <EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD>صı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 2021/11/17 v1.5 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>opencv<EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>BUG<EFBFBD><EFBFBD>
|
2022-05-24 12:05:47 +00:00
|
|
|
|
* 2022/04/18 v1.6 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>߽絼<EFBFBD>µĶ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD><EFBFBD>BUG<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD>汾<EFBFBD>ţ<EFBFBD>v1.6
|
2021-11-20 03:09:04 +00:00
|
|
|
|
|
|
|
|
|
* ====================================================
|
|
|
|
|
*/
|
|
|
|
|
|
2020-03-11 01:58:06 +00:00
|
|
|
|
#ifndef IMAGE_APPLY_OUT_HOLE_H
|
|
|
|
|
#define IMAGE_APPLY_OUT_HOLE_H
|
|
|
|
|
|
|
|
|
|
#include "ImageApply.h"
|
|
|
|
|
|
2022-05-24 12:05:47 +00:00
|
|
|
|
class CImageApplyOutHole : public CImageApply
|
2020-03-11 01:58:06 +00:00
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
2021-11-20 03:09:04 +00:00
|
|
|
|
CImageApplyOutHole();
|
2020-03-11 01:58:06 +00:00
|
|
|
|
|
2021-11-20 03:09:04 +00:00
|
|
|
|
/*
|
|
|
|
|
* borderSize [in]:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
* edgeScale [in]:ֽ<EFBFBD>ű<EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>Χ(0,0.5),Ĭ<EFBFBD><EFBFBD>ֵ0.1
|
|
|
|
|
* threshold [in]:<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
CImageApplyOutHole(float borderSize, float edgeScale, double threshold);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
|
2021-11-20 03:09:04 +00:00
|
|
|
|
~CImageApplyOutHole(void);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
|
|
|
|
|
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
|
|
|
|
|
|
|
|
|
|
float getBorderSize() { return m_borderSize; }
|
|
|
|
|
|
|
|
|
|
float getEdgeScale() { return m_edgeScale; }
|
|
|
|
|
|
|
|
|
|
double getThreshold() { return m_threshold; }
|
|
|
|
|
|
|
|
|
|
void setBorderSize(float size) { m_borderSize = size; }
|
|
|
|
|
|
|
|
|
|
void setEdgeScale(float scale) { m_edgeScale = scale; }
|
|
|
|
|
|
2021-11-20 03:09:04 +00:00
|
|
|
|
void setThreshold(double threshold) { m_threshold = (std::min)((std::max)(threshold, 1.0), 254.0); }
|
2020-03-11 01:58:06 +00:00
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
virtual void apply(cv::Mat& pDib, int side);
|
|
|
|
|
|
2022-05-24 12:05:47 +00:00
|
|
|
|
void getRoi(cv::RotatedRect rrect_front, cv::RotatedRect rrect_back, const cv::Size& srcSize_front, const cv::Size& srcSize_back, cv::Rect& roi_front,
|
2020-03-11 01:58:06 +00:00
|
|
|
|
cv::Rect& roi_back, cv::RotatedRect& mask_rotatedRect);
|
|
|
|
|
|
2021-11-20 03:09:04 +00:00
|
|
|
|
std::vector<std::vector<cv::Point> > filterPoly(std::vector<std::vector<cv::Point>>& contours, const std::vector<cv::Vec4i>& m, cv::RotatedRect roi,
|
2020-03-11 01:58:06 +00:00
|
|
|
|
float edgeScale, float areaThreshold);
|
|
|
|
|
|
|
|
|
|
cv::Scalar getBackGroudColor(const cv::Mat& image, const std::vector<cv::Point> pixelPoints);
|
|
|
|
|
|
2021-11-20 03:09:04 +00:00
|
|
|
|
cv::Scalar getBackGroudColor(const cv::Mat& image, int total);
|
|
|
|
|
|
|
|
|
|
uchar getBackGroudChannelMean(const cv::Mat& gray, int total);
|
|
|
|
|
|
2020-03-11 01:58:06 +00:00
|
|
|
|
private:
|
|
|
|
|
float m_borderSize;
|
|
|
|
|
float m_edgeScale;
|
|
|
|
|
double m_threshold;
|
|
|
|
|
};
|
|
|
|
|
|
2022-05-24 12:05:47 +00:00
|
|
|
|
#endif // !IMAGE_APPLY_OUT_HOLE_H
|