94 lines
2.8 KiB
C
94 lines
2.8 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#if defined(SG_API_LIBRARY)
|
|||
|
|
# define SG_APISHARED_EXPORT __declspec(dllexport)
|
|||
|
|
#else
|
|||
|
|
# define SG_APISHARED_EXPORT __declspec(dllimport)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#include "SG_baseDataType.h"
|
|||
|
|
#include <vector>
|
|||
|
|
|
|||
|
|
#define ENABLE_CROSS_WISE_TEAR 0
|
|||
|
|
#define OUTPUT_TEARING_POINTS 1
|
|||
|
|
#define KEEP_GAP_AS_FEATURE 1
|
|||
|
|
#define SCAN_BUFF_SIZE 21 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>21<32><31>ɨ<EFBFBD><C9A8><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
double scanXScale; //3Dɨ<44><C9A8><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>ȣ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD>ߵļ<DFB5><C4BC>ࡣ
|
|||
|
|
double scanYScale; //3Dɨ<44><C9A8><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD>ȣ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ࡣscanXScale<6C><65>scanYScale<6C><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>װ<EFBFBD><D7B0>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD>ݵõ<DDB5>
|
|||
|
|
double differnceBinTh; //һ<>ײ<EFBFBD><D7B2>ֶ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><DEA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ˺<CEAA><CBBA>б<EFBFBD><D0B1><EFBFBD><EFBFBD>б<EFBFBD><D0B1>ֵ<EFBFBD><D6B5>Ĭ<EFBFBD><C4AC>Ϊ1.0
|
|||
|
|
SSG_tearFeatureExtactPara extractPara;
|
|||
|
|
double tearingMinLen; //<2F><>С˺<D0A1>ѳ<EFBFBD><D1B3>ȣ<EFBFBD><C8A3>ﵽ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>˺<EFBFBD><CBBA>
|
|||
|
|
double tearingMinGap; //<2F><><EFBFBD><EFBFBD>ͬλ<CDAC>õ<EFBFBD>˺<EFBFBD>ѵļ<D1B5><C4BC><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ڴ˼<DAB4><CBBC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊͬһ<CDAC><D2BB>˺<EFBFBD>ѡ<EFBFBD>
|
|||
|
|
}SSG_beltTearingParam;
|
|||
|
|
|
|||
|
|
typedef enum
|
|||
|
|
{
|
|||
|
|
keSG_tearType_Uknown = 0,
|
|||
|
|
keSG_tearType_MachineDir, //<2F><>˺
|
|||
|
|
keSG_tearType_CrossWise,//<2F><>˺
|
|||
|
|
}ESG_tearType;
|
|||
|
|
typedef enum
|
|||
|
|
{
|
|||
|
|
keSG_tearStatus_Uknown = 0,
|
|||
|
|
keSG_tearStatus_New, //<2F>·<EFBFBD><C2B7>ֵ<EFBFBD>˺<EFBFBD><CBBA>
|
|||
|
|
keSG_tearStatus_Growing, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA>
|
|||
|
|
keSG_tearStatus_Ended, //˺<>ѽ<EFBFBD><D1BD><EFBFBD>
|
|||
|
|
keSG_tearStatus_Invalid, //<2F><>Ч˺<D0A7>ѣ<EFBFBD><D1A3><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1>ϲ<EFBFBD><CFB2><EFBFBD>
|
|||
|
|
}ESG_tearStatus;
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int tearID; //ÿ<><C3BF>˺<EFBFBD><CBBA><EFBFBD>и<EFBFBD>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ESG_tearStatus tearStatus;
|
|||
|
|
ESG_tearType tearType;
|
|||
|
|
int statLineIdx; //˺<>ѿ<EFBFBD>ʼʱ<CABC><CAB1>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int endLineIdx; //˺<>ѽ<EFBFBD><D1BD><EFBFBD>ʱ<EFBFBD><CAB1>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>˺<EFBFBD>ѳ<EFBFBD><D1B3><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA><EFBFBD>µ<EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
double tearDepth;//˺<><CBBA><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>-1<><31>ʾ<EFBFBD>ǹᴩ<C7B9><E1B4A9>˺<EFBFBD><CBBA>
|
|||
|
|
double tearWidth;//˺<>ѿ<EFBFBD><D1BF><EFBFBD>
|
|||
|
|
SSG_ROIRectD roi; //˺<>ѵ<EFBFBD>ROI<4F><49>Χ<EFBFBD><CEA7>Ϊ{<7B><><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><D2A3>ϣ<EFBFBD><CFA3><EFBFBD>}
|
|||
|
|
#if OUTPUT_TEARING_POINTS
|
|||
|
|
std::vector<SVzNL3DPosition> pts; //˺<>ѵı߽<C4B1><DFBD>㣬debug<75><67><EFBFBD><EFBFBD>ʾĿ<CABE><C4BF>
|
|||
|
|
#endif
|
|||
|
|
}SSG_beltTearingInfo;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
|
typedef enum
|
|||
|
|
{
|
|||
|
|
keSG_HLineProc_Init = 0, //<2F><>̬
|
|||
|
|
keSG_HLineProc_First_Half,
|
|||
|
|
keSG_HLineProc_Wait_Second,
|
|||
|
|
keSG_HLineProc_Second_Half,
|
|||
|
|
}ESG_HLineProcSM;
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
int hLineIdx;
|
|||
|
|
//SVzNL3DPosition scanBuff[SCAN_BUFF_SIZE]; //ѭ<><D1AD>buff
|
|||
|
|
//int buffHead;//ѭ<><D1AD>buff<66><66>ͷλ<CDB7><CEBB>
|
|||
|
|
//int buffSize;//ѭ<><D1AD>buff
|
|||
|
|
SVzNL3DPosition preVldData;
|
|||
|
|
SVzNL3DPosition gapPos;
|
|||
|
|
ESG_HLineProcSM hLineSM; //ˮƽɨ<C6BD><C9A8><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
|
SSG_RUN firstHalf;
|
|||
|
|
SVzNL3DPosition firstHalf_startPt;
|
|||
|
|
SVzNL3DPosition firstHalf_endPt;
|
|||
|
|
SSG_RUN secondHalf;
|
|||
|
|
SVzNL3DPosition secondHalf_startPt;
|
|||
|
|
SVzNL3DPosition secondHalf_endPt;
|
|||
|
|
double gapMaxZ;
|
|||
|
|
}SSG_hLineProInfo;
|
|||
|
|
|
|||
|
|
|
|||
|
|
SG_APISHARED_EXPORT void sg_detectBeltTearing(
|
|||
|
|
SVzNL3DLaserLine* laser3DPoints, //һ<><D2BB>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD>
|
|||
|
|
int lineIdx,
|
|||
|
|
int nPointCount, //ÿ<><C3BF>ɨ<EFBFBD><C9A8><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Grid<69><64><EFBFBD>ݸ<EFBFBD>ʽʱ<CABD><CAB1>ÿ<EFBFBD><C3BF>ɨ<EFBFBD><C9A8><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>Grid<69><64>ʽ
|
|||
|
|
int* errCode,
|
|||
|
|
std::vector<SSG_hLineProInfo>& hLineWorkers,
|
|||
|
|
std::vector<SSG_beltTearingInfo>& beltTearings_new,
|
|||
|
|
std::vector<SSG_beltTearingInfo>& beltTearings_growing,
|
|||
|
|
std::vector<SSG_beltTearingInfo>& beltTearings_ended,
|
|||
|
|
std::vector<SSG_beltTearingInfo>& beltTearings_unknown, //δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>账<EFBFBD><E8B4A6><EFBFBD><EFBFBD>
|
|||
|
|
const SSG_beltTearingParam measureParam);
|