2022-09-11 15:56:27 +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
|
2023-12-04 09:52:07 +00:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣺v1.0 2020/05/12
|
|
|
|
|
* v1.1 2020/11/17
|
|
|
|
|
* v1.2 2021/09/06 <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>
|
|
|
|
|
* v1.3 2021/11/03 <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>
|
|
|
|
|
* v1.4 2021/11/04 <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>
|
|
|
|
|
* v1.5 2021/11/17 <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>
|
|
|
|
|
* v1.6 2022/04/18 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>߽絼<EFBFBD>µĶ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD><EFBFBD>BUG<EFBFBD><EFBFBD>
|
|
|
|
|
* v1.6.1 2022/05/04 <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* v1.6.2 2022/07/16 <EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>BUG
|
|
|
|
|
* v1.6.3 2022/07/18 <EFBFBD><EFBFBD>mask<EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* v1.7 2022/07/18 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>BUG<EFBFBD><EFBFBD><EFBFBD>滻<EFBFBD><EFBFBD><EFBFBD>캯<EFBFBD><EFBFBD>borderSize<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>崩<EFBFBD><EFBFBD>ΧΪ[borderSize, borderSize * 6]
|
|
|
|
|
* v1.7.1 2022/07/22 <EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>BUG
|
|
|
|
|
* v1.7.2 2022/08/02 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* v1.8 2022/09/07 ȥ<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵı<EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* v1.8.1 2022/09/09 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD>λ<EFBFBD>ľ<EFBFBD>ȷBUG<EFBFBD><EFBFBD>
|
|
|
|
|
* v1.8.2 2022/09/15 <EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD>BUG<EFBFBD><EFBFBD>
|
|
|
|
|
* v1.8.3 2022/09/15 <EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* v1.8.4 2022/09/15 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BUG
|
|
|
|
|
* v1.9 2022/09/16 <EFBFBD>Ż<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* v1.9.1 2022/09/16 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* v1.9.2 2022/11/17 <EFBFBD><EFBFBD>Ѱ<EFBFBD>ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BUG<EFBFBD><EFBFBD>
|
|
|
|
|
* v1.9.3 2023/05/16 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BUG<EFBFBD><EFBFBD>
|
|
|
|
|
* v1.10 2023/11/18 <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
|
|
|
|
* v1.10.1 2023/11/28 <EFBFBD><EFBFBD>̬ѧkSize<EFBFBD><EFBFBD><EFBFBD><EFBFBD>borderSize<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* v1.11 2023/12/02 <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><EFBFBD><EFBFBD>⡣
|
2023-12-08 07:33:47 +00:00
|
|
|
|
* v1.11.1 2023/12/08 <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><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>ţ<EFBFBD>v1.11.1
|
2022-09-11 15:56:27 +00:00
|
|
|
|
|
|
|
|
|
* ====================================================
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef IMAGE_APPLY_OUT_HOLE_H
|
|
|
|
|
#define IMAGE_APPLY_OUT_HOLE_H
|
|
|
|
|
|
|
|
|
|
#include "ImageApply.h"
|
|
|
|
|
|
|
|
|
|
class GIMGPROC_LIBRARY_API CImageApplyOutHole : public CImageApply
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
CImageApplyOutHole();
|
|
|
|
|
|
|
|
|
|
/*
|
2022-11-23 12:13:37 +00:00
|
|
|
|
* borderSize [in]:<EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD>ֵ
|
2022-09-11 15:56:27 +00:00
|
|
|
|
* edgeScale [in]:ֽ<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><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>Χ[0, 0.5]<EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>0.1<EFBFBD><EFBFBD> 0.1<EFBFBD><EFBFBD> 0.1<EFBFBD><EFBFBD> 0.1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ҡ<EFBFBD>
|
|
|
|
|
* threshold [in]:<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
CImageApplyOutHole(float borderSize, cv::Vec4f edgeScale, double threshold);
|
|
|
|
|
|
|
|
|
|
~CImageApplyOutHole(void);
|
|
|
|
|
|
|
|
|
|
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
|
|
|
|
|
|
|
|
|
|
float getBorderSize() { return m_borderSize; }
|
|
|
|
|
|
|
|
|
|
cv::Vec4f getEdgeScale() { return m_edgeScale; }
|
|
|
|
|
|
|
|
|
|
double getThreshold() { return m_threshold; }
|
|
|
|
|
|
|
|
|
|
void setBorderSize(float size) { m_borderSize = size; }
|
|
|
|
|
|
|
|
|
|
void setEdgeScale(float scale) { m_edgeScale = scale; }
|
|
|
|
|
|
|
|
|
|
void setThreshold(double threshold) { m_threshold = (std::min)((std::max)(threshold, 1.0), 254.0); }
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
virtual void apply(cv::Mat& pDib, int side);
|
|
|
|
|
|
|
|
|
|
void getRoi(cv::RotatedRect rrect_front, cv::RotatedRect rrect_back, const cv::Size& srcSize_front, const cv::Size& srcSize_back, cv::Rect& roi_front,
|
|
|
|
|
cv::Rect& roi_back, cv::RotatedRect& mask_rotatedRect);
|
|
|
|
|
|
|
|
|
|
std::vector<std::vector<cv::Point> > filterPoly(std::vector<std::vector<cv::Point>>& contours, std::vector<cv::Vec4i>& m, cv::RotatedRect roi,
|
|
|
|
|
cv::Vec4f edgeScale, float sideLengthLow);
|
|
|
|
|
|
2023-11-20 02:03:10 +00:00
|
|
|
|
void dilateContour(std::vector<cv::Point>& contour, int distance);
|
|
|
|
|
|
2022-09-11 15:56:27 +00:00
|
|
|
|
private:
|
|
|
|
|
float m_borderSize;
|
|
|
|
|
cv::Vec4f m_edgeScale;
|
|
|
|
|
double m_threshold;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // !IMAGE_APPLY_OUT_HOLE_H
|