algoLib/sourceCode/BQ_workpieceCornerExtraction_Export.h

69 lines
2.0 KiB
C
Raw Normal View History

2025-11-01 15:41:12 +08:00
#pragma once
2025-12-06 00:11:43 +08:00
#include "SG_algo_Export.h"
2025-11-01 15:41:12 +08:00
#include <vector>
#define _OUTPUT_DEBUG_DATA 1
typedef struct
{
double lineLen; //ֱ<>߶γ<DFB6><CEB3><EFBFBD>
double dirAngleScale; //<2F><><EFBFBD><EFBFBD><E3B7BD><EFBFBD>ǵij߶<C4B3>
double lineDeviation;//ֱ<><D6B1>ƫ<EFBFBD><C6AB><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>߱<EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD>и<D0B8>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>
double minCutAngleTh; //<2F><>С<EFBFBD>ؽǡ<D8BD><C7A1><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD>費ȫ<E8B2BB><C8AB><EFBFBD>µĽؽǣ<D8BD><C7A3><EFBFBD><EFBFBD>ؽǹ<D8BD>Сʱ<D0A1>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĽؽǺ<D8BD><C7BA><EFBFBD><EFBFBD>ڵ㲨<DAB5><E3B2A8><EFBFBD><EFBFBD><EFBFBD>µĽǶȲ<C7B6><C8B2><EFBFBD>
2025-11-01 15:41:12 +08:00
}SSX_BQworkpiecePara;
typedef struct
{
2025-12-05 23:08:46 +08:00
int workpieceType; //1-<2D>ڵ<EFBFBD>1<EFBFBD><31> 2-<2D>ڵ<EFBFBD>2<EFBFBD><32> 3-<2D>ڵ<EFBFBD>3<EFBFBD><33>4-<2D>ڵ<EFBFBD>4<EFBFBD><34>0-δ֪<CEB4><D6AA> <20><><EFBFBD><EFBFBD>-<2D>Ƿ<EFBFBD>
//1,2,3,4Ϊ<34><CEAA>ʱ<EFBFBD><CAB1>
SVzNL3DPoint corner_1[3];
SVzNL3DPoint corner_2[3];
SVzNL3DPoint corner_3[3];
SVzNL3DPoint corner_4[3];
2025-12-05 23:08:46 +08:00
SVzNL3DPoint center; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
double len135_A1; //A1<41><31><EFBFBD>ȣ<EFBFBD><C8A3>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>135<33>ȷ<EFBFBD><C8B7><EFBFBD>
double len45_B1; //B1<42><31><EFBFBD>ȣ<EFBFBD><C8A3>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>45<34>ȷ<EFBFBD><C8B7><EFBFBD>
double len315_B2; //B2<42><32><EFBFBD>ȣ<EFBFBD><C8A3>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>315<31>ȷ<EFBFBD><C8B7><EFBFBD>
double len225_A2; //A2<41><32><EFBFBD>ȣ<EFBFBD><C8A3>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>225<32>ȷ<EFBFBD><C8B7><EFBFBD>
2025-11-01 15:41:12 +08:00
}SSX_BQworkpieceResult;
typedef struct
{
int rgnIdx;
int edge_size;
int edgeLink1_size;
int edgeLink2_size;
SVzNL3DPoint* edge;
SVzNL3DPoint* edgeLink_1;
SVzNL3DPoint* edgeLink_2;
2025-11-01 15:41:12 +08:00
}SSX_debugInfo;
2025-11-08 09:57:14 +08:00
//<2F><><EFBFBD><EFBFBD><E6B1BE>
SG_APISHARED_EXPORT const char* wd_BQWorkpieceCornerVersion(void);
2025-11-08 09:57:14 +08:00
2025-11-01 15:41:12 +08:00
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>Ͳο<CDB2><CEBF><EFBFBD>ƽƽ<C6BD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ƽ
//<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><E6B7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
SG_APISHARED_EXPORT SSG_planeCalibPara sx_BQ_getBaseCalibPara(
2025-11-01 15:41:12 +08:00
std::vector< std::vector<SVzNL3DPosition>>& scanLines);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SG_APISHARED_EXPORT void sx_BQ_lineDataR(
2025-11-01 15:41:12 +08:00
std::vector< SVzNL3DPosition>& a_line,
const double* camPoseR,
double groundH);
2025-12-05 23:08:46 +08:00
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ǵ㼰<C7B5><E3BCB0>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
SG_APISHARED_EXPORT SSX_BQworkpieceResult sx_BQ_getWorkpieceCorners(
std::vector< std::vector<SVzNL3DPosition>>& scanLines_src,
2025-11-01 15:41:12 +08:00
const SSG_cornerParam cornerPara,
const SSG_outlierFilterParam filterParam,
const SSG_treeGrowParam growParam,
const SSG_planeCalibPara groundCalibPara,
const SSX_BQworkpiecePara workpieceParam,
2025-11-01 15:41:12 +08:00
#if _OUTPUT_DEBUG_DATA
std::vector<SSX_debugInfo>& debug_contours,
2025-11-01 15:41:12 +08:00
#endif
2025-11-02 13:14:15 +08:00
int* errCode);