Merge branch 'main' of http://gitea.mnutil.com/jerryzeng/algoLib
This commit is contained in:
commit
447d7696e7
@ -11,7 +11,8 @@
|
||||
//version 1.3.0 : 修正了寻找上下点使用固定门限的问题
|
||||
//version 1.3.1 : 添加了一个检测轮毂是否存在的函数
|
||||
//version 1.3.2 : 针对不理想点云改进了算法,增强鲁棒性
|
||||
std::string m_strVersion = "1.3.2";
|
||||
//version 1.3.3 : 轮眉点的提取进行了改进,修正了可能的取点错误
|
||||
std::string m_strVersion = "1.3.3";
|
||||
const char* wd_wheelArchHeigthMeasureVersion(void)
|
||||
{
|
||||
return m_strVersion.c_str();
|
||||
@ -49,7 +50,7 @@ bool compareByPtSize(const SWD_clustersInfo& a, const SWD_clustersInfo& b) {
|
||||
}
|
||||
|
||||
//提取轮眉区域的下端点
|
||||
void _getArcEndings(std::vector< std::vector<SVzNL3DPosition>>& scanLines, const int cluster_arc_id, std::vector<SVzNL2DPoint>& contourPts)
|
||||
void _getArcEndings(std::vector< std::vector<SVzNL3DPosition>>& scanLines, const int cluster_arc_id, std::vector<SVzNL2DPoint>& contourPts, double maxZ)
|
||||
{
|
||||
int lineNum = (int)scanLines.size();
|
||||
|
||||
@ -61,7 +62,7 @@ void _getArcEndings(std::vector< std::vector<SVzNL3DPosition>>& scanLines, const
|
||||
{
|
||||
if ((i == 380) && (j > 288))
|
||||
int kkk = 1;
|
||||
if ( (scanLines[i][j].nPointIdx == cluster_arc_id) && (scanLines[i][j].pt3D.z >1e-4))
|
||||
if ( (scanLines[i][j].nPointIdx == cluster_arc_id) && (scanLines[i][j].pt3D.z >1e-4) && (scanLines[i][j].pt3D.z < maxZ))
|
||||
lastIdx = j;
|
||||
}
|
||||
if (lastIdx >= 0)
|
||||
@ -906,7 +907,7 @@ WD_wheelArchInfo wd_wheelArchHeigthMeasure(
|
||||
//寻找轮眉点
|
||||
//(1)快速寻找下端点(2)取中间区域,精确确定端点(3)抛物线拟合(4)计算轮眉点(最高点)
|
||||
std::vector<SVzNL2DPoint> arcEndings;
|
||||
_getArcEndings(scanLines, 2, arcEndings); //轮眉的ID是2
|
||||
_getArcEndings(scanLines, 2, arcEndings, upWheelPt.z); //轮眉的ID是2
|
||||
if (arcEndings.size() == 0)
|
||||
{
|
||||
*errCode = SX_ERR_INVALID_ARC;
|
||||
|
||||
@ -2639,7 +2639,7 @@ void _outputScanDataFile_removeZeros(char* fileName, SVzNL3DLaserLine * scanData
|
||||
#define TEST_COMPUTE_WHEEL_ARCH 1
|
||||
#define TEST_COMPUTE_CALIB_PARA 0
|
||||
|
||||
#define TEST_GROUP 2
|
||||
#define TEST_GROUP 6
|
||||
int main()
|
||||
{
|
||||
#if TEST_CONVERT_TO_GRID
|
||||
@ -2718,10 +2718,14 @@ int main()
|
||||
const char* dataPath[TEST_GROUP] = {
|
||||
"F:/ShangGu/项目/冠钦_轮眉高度测量/测试数据/现场数据/", //0
|
||||
"F:/ShangGu/项目/冠钦_轮眉高度测量/测试数据/部署现场数据/", //1
|
||||
"F:/ShangGu/项目/冠钦_轮眉高度测量/测试数据/部署现场数据2/11/", //2
|
||||
"F:/ShangGu/项目/冠钦_轮眉高度测量/测试数据/部署现场数据2/13/", //3
|
||||
"F:/ShangGu/项目/冠钦_轮眉高度测量/测试数据/部署现场数据2/15/", //4
|
||||
"F:/ShangGu/项目/冠钦_轮眉高度测量/测试数据/部署现场数据2/17/", //5
|
||||
};
|
||||
|
||||
SVzNLRange fileIdx[TEST_GROUP] = {
|
||||
{1,2}, {1,4}
|
||||
{1,2}, {1,4}, {1,7}, {1,7}, {1,7},{1,7}
|
||||
};
|
||||
|
||||
SSG_planeCalibPara poseCalibPara;
|
||||
@ -2745,14 +2749,14 @@ int main()
|
||||
char _scan_file[256];
|
||||
|
||||
int endGroup = TEST_GROUP - 1;
|
||||
for (int grp = 1; grp <= endGroup; grp++)
|
||||
for (int grp = 2; grp <= endGroup; grp++)
|
||||
{
|
||||
char calibFile[250];
|
||||
sprintf_s(calibFile, "%sground_calib_para.txt", dataPath[grp]);
|
||||
poseCalibPara = _readCalibPara(calibFile);
|
||||
for (int fidx = fileIdx[grp].nMin; fidx <= fileIdx[grp].nMax; fidx++)
|
||||
{
|
||||
//fidx = 4;
|
||||
//fidx = 6;
|
||||
sprintf_s(_scan_file, "%sLaserData_%d.txt", dataPath[grp], fidx);
|
||||
std::vector<std::vector< SVzNL3DPosition>> scanData;
|
||||
vzReadLaserScanPointFromFile_XYZ_vector(_scan_file, scanData);
|
||||
@ -2784,9 +2788,9 @@ int main()
|
||||
|
||||
SSG_treeGrowParam growParam;
|
||||
growParam.maxLineSkipNum = 10;
|
||||
growParam.yDeviation_max = 10.0;
|
||||
growParam.yDeviation_max = 20.0;
|
||||
growParam.maxSkipDistance = 10.0;
|
||||
growParam.zDeviation_max = 10.0;//
|
||||
growParam.zDeviation_max = 20.0;//
|
||||
growParam.minLTypeTreeLen = 100; //mm
|
||||
growParam.minVTypeTreeLen = 100; //mm
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user