mrDarker
2025-07-25 c856cf2dc2dca99f303458586dc6f70324228cf0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#ifndef RCUT_DOT_PROCESS_H
#define RCUT_DOT_PROCESS_H
 
class CRcutDotProcess
{
public:
    CRcutDotProcess();
    CRcutDotProcess(DimensionDir eDir, int id);
    ~CRcutDotProcess();
 
public:
    //1. »ñÈ¡ÇøÓò
    void getRegion(int &xPos, int &yPos, int &width, int &height);
    void setRegion(int xPos, int yPos, int width, int height);
 
    //2. »ñÈ¡ID
    int getID(void);
    void setID(int id);
 
    //3. »ñÈ¡ÇøÓò
    HalconCpp::HObject& getImage(void);
    HalconCpp::HObject& getChipRegion(void);
    HalconCpp::HObject& getRoiRegion(void);
    HalconCpp::HObject& getBRKRoiRegion(void);
    void SetStandardPoint(void);
 
    //4. Ö´Ðмì²â
    int Execute(DimensionDir eDir, Point2I offset);
 
    //5. ÇøÓòʾ½Ì
    void TechImage(void);
 
    //6. ±£´æÊý¾Ý
    Json::Value WriteToJson(void);
    void DecodeJson(Json::Value &jsValue);
 
 
public:
    int m_nUse;
    CString m_strName;
 
    int m_nChamferSize;            //ÑÐÄ¥Á¿
    int m_nChipRange;           //Chip Range     
    int m_nChipThres;           //ChipãÐÖµ
 
    int m_nStartAngle;         //¿ªÊ¼½Ç¶È
    int m_nEndAngle;           //½áÊø½Ç¶È
 
    int m_nBinThres;         //±ß½çãÐÖµ
    int m_nEdgeSmooth;        //±ß½çãÐÖµ
 
    //Judge XY
    int m_nDx;
    int m_nDy;
 
 
    std::vector<NgDotInfo> m_nNgInfo;
    double m_fMaxChamber;
    double m_fMinChamber;
    double m_fAvgChamber;
 
    //BrokenÇøÓòµÄ¼ì²â
    int m_nBrokenUse;
    double m_fSigmaThres;   //SigmaãÐÖµ
    double m_fOpenPara;     //ÔëÒô²ÎÊý
    int m_nDistThres;       //¾àÀëãÐÖµ
    int m_nBrokenSmooth;    //ÆÆËðÆ½»¬ãÐÖµ
    int m_nBrokenArea;      //ÆÆËðÇøÓò
    int m_nTech;           //ʾ½Ì²ÎÊý
    int m_nStartDa;
    int m_nEndDa;
    
    Point2D m_ptArrayResult[16];
    Point2D m_ptArrayStd[16];
 
private:
    int m_id;
    int m_nPoseX;
    int m_nPoseY;
    int m_width;
    int m_height;
 
    HalconCpp::HObject m_hImage;
    HalconCpp::HObject m_hRoiRegion;
    HalconCpp::HObject m_hChipRegion;
 
    HalconCpp::HObject m_hBrkRoiRegion;
    
    DimensionDir m_eDir;
    int m_x1;
    int m_y1;
 
    double m_xMmvsp;
    double m_yMmvsp;
    HalconCpp::HObject m_hResultRegion;
 
private:
    //1. »ñȡͼÏñ
    bool getProcImage(DimensionDir eDir, Point2I offset, HalconCpp::HObject &hImage);
 
    //2. »ñÈ¡·Ö±æÂÊ
    void getMmvsp(DimensionDir eDir);
 
    //3. »ñÈ¡½á¹û
    void getResult(void);
 
    //4. »ñÈ¡ÀªÐÎ
    void InspectChip(HalconCpp::HObject &hImage);
 
    //5. Top¼ì²â
    void InspectTopChip(HalconCpp::HObject &hImage);
 
    //6. Bot¼ì²â
    void InspectBotChip(HalconCpp::HObject &hImage);
 
    //7. »ñÈ¡R½Ç¶ÈµÄ³ß´çÂÖÀª
    bool getRCutRegion(std::vector<Point2D> vStartPoints, std::vector<Point2D> vEndPoints, HalconCpp::HObject &hTargetRegion, HalconCpp::HObject &hRoiRegion);
 
    //8. Éú²úÇøÓò
    void genRectangeRegion(HalconCpp::HObject &hRectRegion);
 
    //9. Í¼Ïñ·Ö¸î
    void ImageBinThreshold(HalconCpp::HObject &hImage, HalconCpp::HObject &hRectRegion, HalconCpp::HObject &hRcutRegion, HalconCpp::HObject &hTarget);
 
    //10. »ñÈ¡ÕæÊµµÄRCUT¿ò
    bool getRCutRealRegion(HalconCpp::HObject &hSelectRegion, std::vector<Point2D> vPoints, HalconCpp::HObject &hTarget);
 
    //11. »ñÈ¡µãÕóÐòÁÐ
    bool getRcutEdgePoints(HalconCpp::HObject &hImage, std::vector<Point2D> &vStartPoints, std::vector<Point2D> &vEndPoints, std::vector<Point2D> &vResPoints, double &maxDist, double &minDist);
 
    //12. Ö´ÐÐÇøÓò
    void InpsectChipRegion(HalconCpp::HObject &hChipRegion, HalconCpp::HObject &hRoiRegion);
 
    //13. ¼ì²éBroken
    int CheckBroken(HalconCpp::HObject& hImage, HalconCpp::HObject &hRoiRegion);
 
    //14. ·ÖÎöÆðʼµãºÍ½áÊøµã
    void AnalysisStartEndPoints(std::vector<Point2D>& vStartPoints, std::vector<Point2D>& vEndPoints, std::vector<Point2D>& vResPoints);
 
    //15. ·´Éä±ä»»µã
    Point2D ReflectPoint(Point2D ptStart, Point2D ptEnd, double offset);
 
    //16. ·ÖÎöÆÆÆ¬
    void AnalysisBroken(HalconCpp::HObject& hImage);
};
 
#endif