#pragma once #if defined(_MSC_VER) || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) # define Q_DECL_EXPORT __declspec(dllexport) # define Q_DECL_IMPORT __declspec(dllimport) #else # define Q_DECL_EXPORT __attribute__((visibility("default"))) # define Q_DECL_IMPORT __attribute__((visibility("default"))) #endif #if defined(SG_API_LIBRARY) # define SG_WORKPIECESHARED_EXPORT Q_DECL_EXPORT #else # define SG_WORKPIECESHARED_EXPORT Q_DECL_IMPORT #endif #include "SG_baseDataType.h" #include #include #define _OUTPUT_DEBUG_DATA 1 typedef struct { double lineLen; //直线段长度 }SSX_BQworkpiecePara; typedef struct { int workpieceType; SVzNL3DPoint corner_L[3]; SVzNL3DPoint corner_R[3]; SVzNL3DPoint corner_T[3]; SVzNL3DPoint corner_B[3]; }SSX_BQworkpieceResult; typedef struct { int rgnIdx; SVzNL3DPoint* edge; int edge_size; SVzNL3DPoint edge_ends[2]; SVzNL3DPoint* edgeLink_1; int edgeLink1_size; SVzNL3DPoint edge_link1_ends[2]; SVzNL3DPoint* edgeLink_2; int edgeLink2_size; SVzNL3DPoint edge_link2_ends[2]; }SSX_debugInfo; //计算一个平面调平参数。 //数据输入中可以有一个地平面和参考调平平面,以最高的平面进行调平 //旋转矩阵为调平参数,即将平面法向调整为垂直向量的参数 SG_WORKPIECESHARED_EXPORT SSG_planeCalibPara sx_BQ_getBaseCalibPara( std::vector< std::vector>& scanLines); //相机姿态调平,并去除地面 SG_WORKPIECESHARED_EXPORT void sx_BQ_lineDataR( std::vector< SVzNL3DPosition>& a_line, const double* camPoseR, double groundH); //提取搭接焊缝 SG_WORKPIECESHARED_EXPORT SSX_BQworkpieceResult sx_BQ_getWorkpieceCorners( std::vector< std::vector>& scanLines, const SSG_cornerParam cornerPara, const SSG_outlierFilterParam filterParam, SSG_treeGrowParam growParam, SSG_planeCalibPara groundCalibPara, SSX_BQworkpiecePara workpieceParam, #if _OUTPUT_DEBUG_DATA SSX_debugInfo* debug_conturs, #endif int* errCode);