diff --git a/App/ScrewPosition/ScrewPositionApp/Version.h b/App/ScrewPosition/ScrewPositionApp/Version.h index 7e9faf32..c3fd7f1c 100644 --- a/App/ScrewPosition/ScrewPositionApp/Version.h +++ b/App/ScrewPosition/ScrewPositionApp/Version.h @@ -3,7 +3,7 @@ #define SCREWPOSITION_APP_NAME "螺杆定位" -#define SCREWPOSITION_VERSION_STRING "1.2.1" +#define SCREWPOSITION_VERSION_STRING "1.2.2" #define SCREWPOSITION_BUILD_STRING "1" #define SCREWPOSITION_FULL_VERSION_STRING "V" SCREWPOSITION_VERSION_STRING "_" SCREWPOSITION_BUILD_STRING diff --git a/App/ScrewPosition/ScrewPositionApp/Version.md b/App/ScrewPosition/ScrewPositionApp/Version.md index 1e14e294..74397203 100644 --- a/App/ScrewPosition/ScrewPositionApp/Version.md +++ b/App/ScrewPosition/ScrewPositionApp/Version.md @@ -1,3 +1,9 @@ +# 1.2.1 2026-06-04 +1. 更新算法 + +# 1.2.1 2026-05-24 +1. 参数分开配置 + # 1.2.0 2026-05-24 ## build_1 1. 更新了算法 diff --git a/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.cpp b/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.cpp index f61172d5..d814a2d1 100644 --- a/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.cpp +++ b/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.cpp @@ -42,6 +42,7 @@ DialogDetectionConfig::DialogDetectionConfig(QWidget *parent) initNumericEditors(); initHandEyeCalibTab(); + initNetworkConfigControls(); // 检测对象 ComboBox 选项(带枚举值作 userData) ui->comboType->blockSignals(true); @@ -71,6 +72,7 @@ void DialogDetectionConfig::SetPresenter(ScrewPositionPresenter* presenter) { m_presenter = presenter; loadFromConfig(); + loadNetworkConfig(); } void DialogDetectionConfig::initNumericEditors() @@ -115,6 +117,44 @@ void DialogDetectionConfig::initHandEyeCalibTab() ui->verticalLayout_handEyeCalibHost->addWidget(m_handEyeCalibWidget); } +void DialogDetectionConfig::initNetworkConfigControls() +{ + ui->comboPoseOutputOrder->clear(); + ui->comboPoseOutputOrder->addItem(QStringLiteral("RX-RY-RZ"), 0); + ui->comboPoseOutputOrder->addItem(QStringLiteral("RX-RZ-RY"), 1); + ui->comboPoseOutputOrder->addItem(QStringLiteral("RY-RX-RZ"), 2); + ui->comboPoseOutputOrder->addItem(QStringLiteral("RY-RZ-RX"), 3); + ui->comboPoseOutputOrder->addItem(QStringLiteral("RZ-RX-RY"), 4); + ui->comboPoseOutputOrder->addItem(QStringLiteral("RZ-RY-RX"), 5); + + ui->comboByteOrder->clear(); + ui->comboByteOrder->addItem(QStringLiteral("大端序 (ABCD)"), 0); + ui->comboByteOrder->addItem(QStringLiteral("小端序 (DCBA)"), 1); + + ui->editTcpPort->setValidator(new QIntValidator(1, 65535, ui->editTcpPort)); +} + +void DialogDetectionConfig::loadNetworkConfig() +{ + if (!m_presenter || !m_presenter->GetConfigManager()) { + return; + } + + const ConfigResult configResult = m_presenter->GetConfigManager()->GetConfigResult(); + + int idx = ui->comboPoseOutputOrder->findData(configResult.poseOutputOrder); + if (idx >= 0) { + ui->comboPoseOutputOrder->setCurrentIndex(idx); + } + + idx = ui->comboByteOrder->findData(configResult.byteOrder); + if (idx >= 0) { + ui->comboByteOrder->setCurrentIndex(idx); + } + + ui->editTcpPort->setText(QString::number(configResult.tcpPort)); +} + void DialogDetectionConfig::rebuildCameraSelector() { if (!ui->comboCamera) return; @@ -325,6 +365,20 @@ bool DialogDetectionConfig::saveAllWorkingSetsToConfig() systemConfig.configResult.detectionConfigList.push_back(item); } + bool ok = false; + const int tcpPort = ui->editTcpPort->text().trimmed().toInt(&ok); + if (!ok || tcpPort <= 0 || tcpPort > 65535) { + StyledMessageBox::warning(this, QStringLiteral("错误"), + QStringLiteral("TCP端口必须在 1 到 65535 之间。")); + ui->editTcpPort->setFocus(); + ui->editTcpPort->selectAll(); + return false; + } + + systemConfig.configResult.tcpPort = static_cast(tcpPort); + systemConfig.configResult.poseOutputOrder = ui->comboPoseOutputOrder->currentData().toInt(); + systemConfig.configResult.byteOrder = ui->comboByteOrder->currentData().toInt(); + if (!m_presenter->GetConfigManager()->UpdateFullConfig(systemConfig)) { StyledMessageBox::warning(this, QStringLiteral("失败"), QStringLiteral("更新配置缓存失败。")); diff --git a/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.h b/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.h index 8dc32cda..ec8102e9 100644 --- a/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.h +++ b/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.h @@ -51,6 +51,8 @@ private: void initNumericEditors(); void initHandEyeCalibTab(); + void initNetworkConfigControls(); + void loadNetworkConfig(); void rebuildCameraSelector(); void loadFromConfig(); bool commitCurrentEditorsToWorkingSet(QString* errMsg = nullptr); diff --git a/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.ui b/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.ui index c848e8a0..c23754c0 100644 --- a/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.ui +++ b/App/ScrewPosition/ScrewPositionApp/dialogdetectionconfig.ui @@ -7,7 +7,7 @@ 0 0 900 - 800 + 970 @@ -814,11 +814,139 @@ QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; + + + + 40 + 735 + 821 + 170 + + + + + 14 + + + + QGroupBox { color: rgb(221, 225, 233); border: 1px solid rgb(100, 100, 100); border-radius: 4px; margin-top: 12px; padding-top: 8px; } +QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } +QLabel { color: rgb(221, 225, 233); } +QLineEdit { color: rgb(221, 225, 233); background-color: rgb(47, 48, 52); border: 1px solid rgb(70, 72, 78); padding: 4px; } +QComboBox { color: rgb(221, 225, 233); background-color: rgb(47, 48, 52); border: 1px solid rgb(70, 72, 78); padding: 4px; } +QComboBox QAbstractItemView { color: rgb(221, 225, 233); background-color: rgb(47, 48, 52); selection-background-color: rgb(70, 100, 150); } + + + 通信配置 + + + + + 30 + 35 + 220 + 30 + + + + + 14 + + + + 姿态输入/输出顺序: + + + + + + 280 + 35 + 220 + 32 + + + + + 14 + + + + + + + 30 + 75 + 220 + 30 + + + + + 14 + + + + 数据字节序: + + + + + + 280 + 75 + 220 + 32 + + + + + 14 + + + + + + + 30 + 115 + 220 + 30 + + + + + 14 + + + + TCP端口: + + + + + + 280 + 115 + 220 + 32 + + + + + 14 + + + + 7800 + + + 40 - 745 + 915 140 45 @@ -852,7 +980,7 @@ QPushButton:pressed { 520 - 745 + 915 100 45 @@ -886,7 +1014,7 @@ QPushButton:pressed { 640 - 745 + 915 100 45 @@ -920,7 +1048,7 @@ QPushButton:pressed { 760 - 745 + 915 100 45 diff --git a/App/ScrewPosition/ScrewPositionConfig/Src/AlgorithmParamConverter.cpp b/App/ScrewPosition/ScrewPositionConfig/Src/AlgorithmParamConverter.cpp index a0abbb2b..5a793b90 100644 --- a/App/ScrewPosition/ScrewPositionConfig/Src/AlgorithmParamConverter.cpp +++ b/App/ScrewPosition/ScrewPositionConfig/Src/AlgorithmParamConverter.cpp @@ -20,7 +20,7 @@ ScrewDetectAlgorithmParams AlgorithmParamConverter::ToScrewDetectAlgorithmParams params.cornerParam.minEndingGap = algorithmParams.cornerParam.minEndingGap; params.cornerParam.minEndingGap_z = algorithmParams.cornerParam.minEndingGap_z; // Keep the existing runtime behavior: the algorithm scale is derived from rod diameter. - params.cornerParam.scale = params.rodDiameter / 4.0; + params.cornerParam.scale = algorithmParams.cornerParam.scale; // params.rodDiameter / 4.0; params.cornerParam.cornerTh = algorithmParams.cornerParam.cornerTh; params.cornerParam.jumpCornerTh_1 = algorithmParams.cornerParam.jumpCornerTh_1; params.cornerParam.jumpCornerTh_2 = algorithmParams.cornerParam.jumpCornerTh_2; diff --git a/AppAlgo/rodAndBarDetection/Arm/aarch64/libbaseAlgorithm.so b/AppAlgo/rodAndBarDetection/Arm/aarch64/libbaseAlgorithm.so index 431f2d15..5ad643fc 100644 Binary files a/AppAlgo/rodAndBarDetection/Arm/aarch64/libbaseAlgorithm.so and b/AppAlgo/rodAndBarDetection/Arm/aarch64/libbaseAlgorithm.so differ diff --git a/AppAlgo/rodAndBarDetection/Arm/aarch64/librodAndBarDetection.so b/AppAlgo/rodAndBarDetection/Arm/aarch64/librodAndBarDetection.so index 29b787b4..bcd5a8eb 100644 Binary files a/AppAlgo/rodAndBarDetection/Arm/aarch64/librodAndBarDetection.so and b/AppAlgo/rodAndBarDetection/Arm/aarch64/librodAndBarDetection.so differ diff --git a/AppAlgo/rodAndBarDetection/Inc/SG_baseDataType.h b/AppAlgo/rodAndBarDetection/Inc/SG_baseDataType.h index e619576e..b8fa42e5 100644 --- a/AppAlgo/rodAndBarDetection/Inc/SG_baseDataType.h +++ b/AppAlgo/rodAndBarDetection/Inc/SG_baseDataType.h @@ -291,6 +291,7 @@ typedef struct SVzNL3DPoint endPt; SVzNL3DPoint peakPt; double featureValue; + int flag; }SWD_rodArcFeature; typedef struct @@ -441,6 +442,7 @@ typedef struct int start; int len; int value; + double curveLen; }SSG_RUN; typedef struct diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.dll b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.dll index 96a4419b..f056fb14 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.dll and b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.dll differ diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.lib b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.lib index 2935f614..14ac784b 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.lib and b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.lib differ diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.pdb b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.pdb index f1eefa5e..c9a0f3ae 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.pdb and b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/baseAlgorithm.pdb differ diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/rodAndBarDetection.dll b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/rodAndBarDetection.dll index 311a93e5..fe355da3 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/rodAndBarDetection.dll and b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/rodAndBarDetection.dll differ diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/rodAndBarDetection.pdb b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/rodAndBarDetection.pdb index 064ec078..7227b3bd 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Debug/rodAndBarDetection.pdb and b/AppAlgo/rodAndBarDetection/Windows/x64/Debug/rodAndBarDetection.pdb differ diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.dll b/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.dll index 65048b5f..a6d43f04 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.dll and b/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.dll differ diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.lib b/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.lib index 9bee4bdb..64e2a927 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.lib and b/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.lib differ diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.pdb b/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.pdb index fd7a37b7..367ba688 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.pdb and b/AppAlgo/rodAndBarDetection/Windows/x64/Release/baseAlgorithm.pdb differ diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Release/rodAndBarDetection.dll b/AppAlgo/rodAndBarDetection/Windows/x64/Release/rodAndBarDetection.dll index 441cc0d5..44a82e11 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Release/rodAndBarDetection.dll and b/AppAlgo/rodAndBarDetection/Windows/x64/Release/rodAndBarDetection.dll differ diff --git a/AppAlgo/rodAndBarDetection/Windows/x64/Release/rodAndBarDetection.pdb b/AppAlgo/rodAndBarDetection/Windows/x64/Release/rodAndBarDetection.pdb index 7fabaf1a..39f6308c 100644 Binary files a/AppAlgo/rodAndBarDetection/Windows/x64/Release/rodAndBarDetection.pdb and b/AppAlgo/rodAndBarDetection/Windows/x64/Release/rodAndBarDetection.pdb differ diff --git a/AppAlgo/rodAndBarDetection/rodAndBarDetection_test.cpp b/AppAlgo/rodAndBarDetection/rodAndBarDetection_test.cpp index d79c59c1..5168afaa 100644 --- a/AppAlgo/rodAndBarDetection/rodAndBarDetection_test.cpp +++ b/AppAlgo/rodAndBarDetection/rodAndBarDetection_test.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include typedef struct @@ -32,6 +33,14 @@ typedef struct float b; } SPointXYZRGB; +bool fileExists(const char* path) { + FILE* f = fopen(path, "r"); + if (f != NULL) { + fclose(f); + return true; + } + return false; +} // 点乘 dot double _dotMultiply(const SVzNL3DPoint& a, const SVzNL3DPoint& b) @@ -1133,25 +1142,26 @@ void locatingPlateTest(void) } } -#define NEW_LOCATING_PALTE_TEST_GROUP 1 +#define NEW_LOCATING_PALTE_TEST_GROUP 2 void newLocatingPlateTest(void) { const char* dataPath[NEW_LOCATING_PALTE_TEST_GROUP] = { - "F:/ShangGu/项目/冠钦项目/螺杆测量/配天现场点云/定位盘点云20260621/", //0 + "F:/ShangGu/项目/冠钦项目/螺杆测量/配天现场点云/定位盘点云20260521/", //0 + "F:/ShangGu/项目/冠钦项目/螺杆测量/配天现场点云/定位盘点云20260603/", //1 }; SVzNLRange fileIdx[NEW_LOCATING_PALTE_TEST_GROUP] = { - {12,13}, + {12,13}, {1,51} }; const char* ver = wd_rodAndBarDetectionVersion(); printf("ver:%s\n", ver); - for (int grp = 0; grp < NEW_LOCATING_PALTE_TEST_GROUP; grp++) + for (int grp = 1; grp < NEW_LOCATING_PALTE_TEST_GROUP; grp++) { for (int fidx = fileIdx[grp].nMin; fidx <= fileIdx[grp].nMax; fidx++) { - //fidx =2; + //fidx =16; char _scan_file[256]; sprintf_s(_scan_file, "%sLaserData_%d.txt", dataPath[grp], fidx); @@ -1512,23 +1522,39 @@ void rodPositionTest(void) #endif } +int counterValidPts(std::vector& lineData) +{ + int num = 0; + for (int i = 0; i < (int)lineData.size(); i++) + { + if (lineData[i].pt3D.z > 1e-4) + num++; + else + { + lineData[i].pt3D = { 0, 0, 0 }; + } + } + return num; +} -#define WELD_SEAM_TEST_GROUP 2 +#define WELD_SEAM_TEST_GROUP 4 void rodWeldSeamPosition_test(void) { const char* dataPath[WELD_SEAM_TEST_GROUP] = { "F:/ShangGu/项目/冠钦项目/筑裕视觉钢结构焊接/视觉照片1/", //0 - "F:/ShangGu/项目/冠钦项目/筑裕视觉钢结构焊接/视觉照片2/", //0 + "F:/ShangGu/项目/冠钦项目/筑裕视觉钢结构焊接/视觉照片2/", //1 + "F:/ShangGu/项目/冠钦项目/筑裕视觉钢结构焊接/数据3/特征点1/", //2 + "F:/ShangGu/项目/冠钦项目/筑裕视觉钢结构焊接/数据3/特征点2/", //3 }; SVzNLRange fileIdx[WELD_SEAM_TEST_GROUP] = { - {1,20},{1,20}, + {1,20},{1,20},{1,27}, { 1,21 }, }; const char* ver = wd_rodAndBarDetectionVersion(); printf("ver:%s\n", ver); - for (int grp = 0; grp < WELD_SEAM_TEST_GROUP; grp++) + for (int grp = 2; grp < WELD_SEAM_TEST_GROUP; grp++) { SSG_planeCalibPara poseCalibPara; //初始化成单位阵 @@ -1552,15 +1578,95 @@ void rodWeldSeamPosition_test(void) { //fidx =1; char _scan_file[256]; - sprintf_s(_scan_file, "%s%d_LaserData_ID019567.txt", dataPath[grp], fidx); + sprintf_s(_scan_file, "%s%d_LaserData_groundAdjusted.txt", dataPath[grp], fidx); std::vector> scanLines; wdReadLaserScanPointFromFile_XYZ_vector(_scan_file, scanLines); - //转成plyTxt格式 - //sprintf_s(_scan_file, "%s%d_ply_Hi229229.txt", dataPath[grp], fidx); - //wdSavePlyTxt(_scan_file, scanLines); + if ((grp == 2) || (grp == 3)) //计算调平矩阵 + { +#if 0 + std::vector validPts; + std::vector> copy_scanLines; + copy_scanLines.resize(scanLines.size()); + for (int line = 0; line < (int)scanLines.size(); line++) + { + std::vector< SVzNL3DPosition>& a_line = scanLines[line]; + copy_scanLines[line].resize(a_line.size()); + for (int j = 0; j < (int)a_line.size(); j++) + { + copy_scanLines[line][j] = a_line[j]; + if (a_line[j].pt3D.z > 1e-4) + { + cv::Point3f a_pt = cv::Point3f((float)a_line[j].pt3D.x, (float)a_line[j].pt3D.y, (float)a_line[j].pt3D.z); + validPts.push_back(a_pt); + } + } + } + std::vector out_inliers; + Plane res = ransacFitPlane(validPts, out_inliers); + if (res.C < 0) + { + res.A = -res.A; + res.B = -res.B; + res.C = -res.C; + res.D = -res.D; + } + float meanH = 0; + int counter = 0; + for (int i = 0; i < (int)out_inliers.size(); i++) + { + meanH += out_inliers[i].z; + counter++; + } + //计算投影向量 + SVzNL3DPoint vec_1 = { res.A, res.B, res.C }; + SVzNL3DPoint vec_2 = { 0, 0, 1.0 }; + SSG_planeCalibPara calibPara = wd_computeRTMatrix(vec_1, vec_2); + for (int m = 0; m < 9; m++) + { + poseCalibPara.planeCalib[m] = calibPara.planeCalib[m]; + poseCalibPara.invRMatrix[m] = calibPara.invRMatrix[m]; + } + poseCalibPara.planeHeight = meanH / counter; + char _out_file[256]; + sprintf_s(_out_file, "%s%d_calib_para.txt", dataPath[grp], fidx); + _outputCalibPara(_out_file, poseCalibPara); + + sprintf_s(_out_file, "%s%d_LaserData_groundAdjusted.txt", dataPath[grp], fidx); + //if (false == fileExists(_out_file)) + { + //输出调平效果 + int firstValidLine = -1; + int lastValidLine = -1; + for (int line = 0; line < (int)copy_scanLines.size(); line++) + { + //行处理 + //调平,去除地面 + double cuttingZ = poseCalibPara.planeHeight - 100; + sx_rodPosition_lineDataR(copy_scanLines[line], poseCalibPara.planeCalib, cuttingZ); + int ptsNum = counterValidPts(copy_scanLines[line]); + if (ptsNum > 10) + { + if (firstValidLine < 0) + firstValidLine = line; + lastValidLine = line; + } + } + if ((lastValidLine > 0) && (lastValidLine < copy_scanLines.size() - 1)) + { + copy_scanLines.erase(copy_scanLines.begin() + lastValidLine + 1, copy_scanLines.end()); + } + if(firstValidLine > 1) + { + copy_scanLines.erase(copy_scanLines.begin(), copy_scanLines.begin() + firstValidLine - 1); + } + _outputScanDataFile(_out_file, copy_scanLines, 0.0f, 0, 0); + } +#endif + } + long t1 = (long)GetTickCount64();//统计时间 SSX_rodParam rodParam; @@ -1583,7 +1689,7 @@ void rodWeldSeamPosition_test(void) growParam.maxLineSkipNum = 5; growParam.yDeviation_max = 5.0; growParam.maxSkipDistance = 20.0; - growParam.zDeviation_max = 3.0;// + growParam.zDeviation_max = 5.0;// growParam.minLTypeTreeLen = 50; //mm, 螺杆长度 growParam.minVTypeTreeLen = 50; //mm @@ -1603,11 +1709,14 @@ void rodWeldSeamPosition_test(void) &errCode); long t2 = (long)GetTickCount64(); printf("%s: %d(ms)!\n", _scan_file, (int)(t2 - t1)); - //输出测试结果 - sprintf_s(_scan_file, "%sresult\\%d_result.txt", dataPath[grp], fidx); - _outputRGBDScan_RGBD_weldSeam(_scan_file, scanLines, weldSeamInfo); - sprintf_s(_scan_file, "%sresult\\%d_screw_info.txt", dataPath[grp], fidx); - _outputWeldSeamInfo(_scan_file, weldSeamInfo); + if (errCode == 0) + { + //输出测试结果 + sprintf_s(_scan_file, "%sresult\\%d_result.txt", dataPath[grp], fidx); + _outputRGBDScan_RGBD_weldSeam(_scan_file, scanLines, weldSeamInfo); + sprintf_s(_scan_file, "%sresult\\%d_screw_info.txt", dataPath[grp], fidx); + _outputWeldSeamInfo(_scan_file, weldSeamInfo); + } } } } @@ -1626,8 +1735,8 @@ int main() { //ESG_testMode testMode = keSG_测试_配天螺杆定位; //ESG_testMode testMode = keSG_测试_配天定位盘定位; - //ESG_testMode testMode = keSG_测试_配天新定位盘定位; - ESG_testMode testMode = keSG_测试_棒材抓取; + ESG_testMode testMode = keSG_测试_配天新定位盘定位; + //ESG_testMode testMode = keSG_测试_棒材抓取; //ESG_testMode testMode = keSG_测试_筑裕钢筋焊缝定位; if(keSG_测试_配天螺杆定位 == testMode)