#pragma once #include "SG_algo_Export.h" #include #define _OUTPUT_DEBUG_DATA 1 typedef struct { SVzNL3DPoint threadPos; //线头位置 SVzNL3DPoint operatePos; //下刀位置 double rotateAngle; //水平旋转角 }SSX_bagThreadInfo; //线头信息 typedef struct { bool isHorizonScan; bool scanFromThreadHead; double camInstallAngle; //相机安装时与台面夹角 double stitchWidth; //针脚最小宽度,用于过滤虚假的针脚 double operateDist; //下刀位置距针脚距离 double mark_height; //标定柱高度 double mark_diameter; //标定柱外径 double mark_distance; //两个标定柱的距离 }SSX_ScanInfo; //读版本号 SG_APISHARED_EXPORT const char* wd_bagThreadPositioningVersion(void); //计算一个平面调平参数。 //数据输入中可以有一个地平面和参考调平平面,以最高的平面进行调平 //旋转矩阵为调平参数,即将平面法向调整为垂直向量的参数 SG_APISHARED_EXPORT SSG_planeCalibPara wd_bagThread_getBaseCalibPara( std::vector< std::vector>& scanLines); //相机姿态调平,并去除地面 SG_APISHARED_EXPORT void wd_bagThread_lineDataR( std::vector< SVzNL3DPosition>& a_line, const double* camPoseR, double groundH); //线头位置检测定位 SG_APISHARED_EXPORT void wd_bagThreadPositioning( std::vector< std::vector>& scanLines, const SSX_ScanInfo scanInfo, //true:激光线平行槽道;false:激光线垂直槽道 const SSG_planeCalibPara groundCalibPara, const SSG_outlierFilterParam filterParam, //噪点过滤参数 const SSG_cornerParam cornerPara, //V型特征参数 const SSG_raisedFeatureParam raisedFeaturePara,//线尾凸起参数 const SSG_treeGrowParam growParam, //特征生长参数 std::vector& bagThreadInfo, std::vector& bagThreadInfo_relative, //相对于Mark的坐标 std::vector& output_markCenter, //输出Mark位置信息 int* errCode);