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
#pragma once
 
#include "Global_Define.h"
#include "HardwareSettings.h"
#include "GlassRecipe.h"
#include "Transfer_Data.h"
#include "InspectCamera.h"
#include "Defect.h"
 
enum    EM_RESULT_PATH{EM_RESULT_FILE=0, EM_RESULT_DEFECT, EM_RESULT_FULL, EM_RESULT_MARK};
 
class CPostProcess
{
public:
    CPostProcess(void);
    virtual ~CPostProcess(void);
 
public:
    virtual BOOL    InitPostProcessing();
    virtual BOOL    RunPostProcessing();
    virtual BOOL    RunPostProcessing_SaveDefectInfo();
    virtual BOOL    RunPostProcessing_SaveFiltImage();
 
    virtual BOOL    ProcessingScanEnd();
    virtual CString GetResultPath(EM_RESULT_PATH ePath);
 
    void            SetInspectCamera(int iCam,CInspectCamera *pIns);
    void            SetPrameter(CGlass_Data *pGlsData,CHardwareSettings *pHW,CGlassRecipe *pRecipe,CTransfer_Data *pTransData);
 
    void            WriteSetupData();
 
protected:
    void            JudgementData();
    void            SaveDefectImageNG();
    void            SaveDefectImageOK();
    void            SaveDefectData();
    void            MergeDefect();
    void            CalcGlassSize();
    void            PostDefectJudgeProcess();
    int                GetInspectionDefect();
    BOOL            DefectProcess_Judge(CDefect *pDefect);
    BOOL            DefectProcess(CDefect* pDefect,CInspectCamera *pInspect, CCameraSettings* pCamera);
    BOOL            SaveDefectImage(LPBYTE pImage,CSize szImage,CRect rectDefect,CString strFile,DimensionDir emDir);
    BOOL            SaveDefectImage2(LPBYTE pImage,CSize szImage,CRect rectDefect,CString strFile);
    BOOL            SaveDefectImage_with_Title(CDefect* pDefect, CSize szImage, CRect rectDefect, CString strFile, CvScalar color = cvScalar(0, 0, 255));
    int             MeasrueCutLineResult(DimensionDir dir);
    
    void            WriteMapFile();
    void            WriteDefectFile();
    void            WriteDataFile();
 
public:
    void            SetView(void* pView)    {m_pView = pView;}
 
protected:
    BOOL            CheckDirectory(const TCHAR szPathName[], BOOL bDelete = FALSE);
    BOOL            CreateDataDirectory();
    BOOL            DeleteFolder(const CString &strFolder);
    
private:
    CRITICAL_SECTION m_criticalSection; //?£¤3a¨¢?
    inline void Lock() { ::InitializeCriticalSection(&m_criticalSection); }
    inline void Unlock() { ::DeleteCriticalSection(&m_criticalSection); }
 
protected:
    CGlass_Data            *m_pGlassData;            
    CHardwareSettings    *m_pHardware;
    CGlassRecipe        *m_pRecipe;    
    CTransfer_Data        *m_pTransData;
    CInspectCamera        *m_pInspectCamera[MAX_CAMERA_COUNT];
 
    CString            m_strResultFolder;
    CString            m_strDefectFolder;
    CString            m_strSplineFolder;
    CString            m_strFullImgeFolder;
    CString            m_strImageMarkFolder;
 
    void*            m_pView;
};