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
#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);
 
    //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;
 
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;
    
    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);
};
 
#endif