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.0 : 修正了寻找上下点使用固定门限的问题
|
||||||
//version 1.3.1 : 添加了一个检测轮毂是否存在的函数
|
//version 1.3.1 : 添加了一个检测轮毂是否存在的函数
|
||||||
//version 1.3.2 : 针对不理想点云改进了算法,增强鲁棒性
|
//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)
|
const char* wd_wheelArchHeigthMeasureVersion(void)
|
||||||
{
|
{
|
||||||
return m_strVersion.c_str();
|
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();
|
int lineNum = (int)scanLines.size();
|
||||||
|
|
||||||
@ -61,7 +62,7 @@ void _getArcEndings(std::vector< std::vector<SVzNL3DPosition>>& scanLines, const
|
|||||||
{
|
{
|
||||||
if ((i == 380) && (j > 288))
|
if ((i == 380) && (j > 288))
|
||||||
int kkk = 1;
|
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;
|
lastIdx = j;
|
||||||
}
|
}
|
||||||
if (lastIdx >= 0)
|
if (lastIdx >= 0)
|
||||||
@ -906,7 +907,7 @@ WD_wheelArchInfo wd_wheelArchHeigthMeasure(
|
|||||||
//寻找轮眉点
|
//寻找轮眉点
|
||||||
//(1)快速寻找下端点(2)取中间区域,精确确定端点(3)抛物线拟合(4)计算轮眉点(最高点)
|
//(1)快速寻找下端点(2)取中间区域,精确确定端点(3)抛物线拟合(4)计算轮眉点(最高点)
|
||||||
std::vector<SVzNL2DPoint> arcEndings;
|
std::vector<SVzNL2DPoint> arcEndings;
|
||||||
_getArcEndings(scanLines, 2, arcEndings); //轮眉的ID是2
|
_getArcEndings(scanLines, 2, arcEndings, upWheelPt.z); //轮眉的ID是2
|
||||||
if (arcEndings.size() == 0)
|
if (arcEndings.size() == 0)
|
||||||
{
|
{
|
||||||
*errCode = SX_ERR_INVALID_ARC;
|
*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_WHEEL_ARCH 1
|
||||||
#define TEST_COMPUTE_CALIB_PARA 0
|
#define TEST_COMPUTE_CALIB_PARA 0
|
||||||
|
|
||||||
#define TEST_GROUP 2
|
#define TEST_GROUP 6
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
#if TEST_CONVERT_TO_GRID
|
#if TEST_CONVERT_TO_GRID
|
||||||
@ -2718,10 +2718,14 @@ int main()
|
|||||||
const char* dataPath[TEST_GROUP] = {
|
const char* dataPath[TEST_GROUP] = {
|
||||||
"F:/ShangGu/项目/冠钦_轮眉高度测量/测试数据/现场数据/", //0
|
"F:/ShangGu/项目/冠钦_轮眉高度测量/测试数据/现场数据/", //0
|
||||||
"F:/ShangGu/项目/冠钦_轮眉高度测量/测试数据/部署现场数据/", //1
|
"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] = {
|
SVzNLRange fileIdx[TEST_GROUP] = {
|
||||||
{1,2}, {1,4}
|
{1,2}, {1,4}, {1,7}, {1,7}, {1,7},{1,7}
|
||||||
};
|
};
|
||||||
|
|
||||||
SSG_planeCalibPara poseCalibPara;
|
SSG_planeCalibPara poseCalibPara;
|
||||||
@ -2745,14 +2749,14 @@ int main()
|
|||||||
char _scan_file[256];
|
char _scan_file[256];
|
||||||
|
|
||||||
int endGroup = TEST_GROUP - 1;
|
int endGroup = TEST_GROUP - 1;
|
||||||
for (int grp = 1; grp <= endGroup; grp++)
|
for (int grp = 2; grp <= endGroup; grp++)
|
||||||
{
|
{
|
||||||
char calibFile[250];
|
char calibFile[250];
|
||||||
sprintf_s(calibFile, "%sground_calib_para.txt", dataPath[grp]);
|
sprintf_s(calibFile, "%sground_calib_para.txt", dataPath[grp]);
|
||||||
poseCalibPara = _readCalibPara(calibFile);
|
poseCalibPara = _readCalibPara(calibFile);
|
||||||
for (int fidx = fileIdx[grp].nMin; fidx <= fileIdx[grp].nMax; fidx++)
|
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);
|
sprintf_s(_scan_file, "%sLaserData_%d.txt", dataPath[grp], fidx);
|
||||||
std::vector<std::vector< SVzNL3DPosition>> scanData;
|
std::vector<std::vector< SVzNL3DPosition>> scanData;
|
||||||
vzReadLaserScanPointFromFile_XYZ_vector(_scan_file, scanData);
|
vzReadLaserScanPointFromFile_XYZ_vector(_scan_file, scanData);
|
||||||
@ -2784,9 +2788,9 @@ int main()
|
|||||||
|
|
||||||
SSG_treeGrowParam growParam;
|
SSG_treeGrowParam growParam;
|
||||||
growParam.maxLineSkipNum = 10;
|
growParam.maxLineSkipNum = 10;
|
||||||
growParam.yDeviation_max = 10.0;
|
growParam.yDeviation_max = 20.0;
|
||||||
growParam.maxSkipDistance = 10.0;
|
growParam.maxSkipDistance = 10.0;
|
||||||
growParam.zDeviation_max = 10.0;//
|
growParam.zDeviation_max = 20.0;//
|
||||||
growParam.minLTypeTreeLen = 100; //mm
|
growParam.minLTypeTreeLen = 100; //mm
|
||||||
growParam.minVTypeTreeLen = 100; //mm
|
growParam.minVTypeTreeLen = 100; //mm
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user