algoLib/sourceCode/WD_particleSizeMeasure_Export.h
2025-11-10 22:44:31 +08:00

55 lines
1.3 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>
#include <opencv2/opencv.hpp>
#define OUTPUT_DEBUG 1
typedef struct
{
SWD_sizeParam minSize;
SWD_sizeParam alarmSize;
}SWD_paricleSizeParam;
typedef struct
{
SSG_outlierFilterParam filterParam;
SSG_cornerParam cornerParam;
SSG_treeGrowParam growParam;
}SWD_PSM_algoParam;
typedef struct
{
double EQRadius;
SVzNL3DPoint center_pos;
}SWD_ParticlePosInfo;
//计算一个平面调平参数。
//数据输入中可以有一个地平面和参考调平平面,以最高的平面进行调平
//旋转矩阵为调平参数,即将平面法向调整为垂直向量的参数
SG_APISHARED_EXPORT SSG_planeCalibPara wd_getBaseCalibPara(
std::vector< std::vector<SVzNL3DPosition>>& scanLines);
//相机姿态调平,并去除地面
SG_APISHARED_EXPORT void wd_lineDataR(
std::vector< SVzNL3DPosition>& a_line,
const double* camPoseR,
double groundH);
//粒径检测
SG_APISHARED_EXPORT void wd_particleSizeMeasure(
std::vector< std::vector<SVzNL3DPosition>>& scanLines,
const SWD_paricleSizeParam particleSizeParam,
const SSG_planeCalibPara groundCalibPara,
const SWD_PSM_algoParam algoParam,
std::vector<SWD_ParticlePosInfo>& particles,
int* errCode);