From da7d2a16cf4d70c88fde746f33ab7d98873bff95 Mon Sep 17 00:00:00 2001 From: jerryzeng Date: Mon, 15 Sep 2025 21:22:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=AF=B9opencv320=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E5=85=BC=E5=AE=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bagPositioning/bagPositioning.vcxproj | 18 ++--- bagPositioning_test/bagPositioning_test.cpp | 72 +++++++++++++++---- .../bagPositioning_test.vcxproj | 14 ++-- baseAlgorithm/baseAlgorithm.vcxproj | 18 ++--- sourceCode/SG_bagPositioning.cpp | 29 ++++++-- sourceCode/SG_baseFunc.cpp | 1 + 6 files changed, 109 insertions(+), 43 deletions(-) diff --git a/bagPositioning/bagPositioning.vcxproj b/bagPositioning/bagPositioning.vcxproj index a19196a..a874386 100644 --- a/bagPositioning/bagPositioning.vcxproj +++ b/bagPositioning/bagPositioning.vcxproj @@ -78,12 +78,12 @@ true - ..\..\thirdParty\VzNLSDK\Inc;..\..\thirdParty\opencv\build\include;..\sourceCode;..\sourceCode\inc;$(IncludePath) + ..\..\thirdParty\VzNLSDK\Inc;..\..\thirdParty\opencv320\build\include;..\sourceCode;..\sourceCode\inc;$(IncludePath) $(SolutionDir)build\$(Platform)\$(Configuration)\ false - ..\..\thirdParty\VzNLSDK\Inc;..\..\thirdParty\opencv\build\include;..\sourceCode;..\sourceCode\inc;$(IncludePath) + ..\..\thirdParty\VzNLSDK\Inc;..\..\thirdParty\opencv320\build\include;..\sourceCode;..\sourceCode\inc;$(IncludePath) $(SolutionDir)build\$(Platform)\$(Configuration)\ @@ -128,14 +128,15 @@ true NotUsing pch.h - ..\..\thirdParty\opencv\build\include;%(AdditionalIncludeDirectories) + ..\..\thirdParty\opencv320\build\include;%(AdditionalIncludeDirectories) + /D_CRT_SECURE_NO_WARNINGS %(AdditionalOptions) Windows true false - ..\..\thirdParty\opencv\build\x64\vc16\lib;..\build\x64\Debug;%(AdditionalLibraryDirectories) - opencv_world480d.lib;baseAlgorithm.lib;%(AdditionalDependencies) + ..\..\thirdParty\opencv320\build\x64\vc14\lib;..\build\x64\Debug;%(AdditionalLibraryDirectories) + opencv_world320d.lib;baseAlgorithm.lib;%(AdditionalDependencies) @@ -148,7 +149,8 @@ true NotUsing pch.h - ..\..\thirdParty\opencv\build\include;%(AdditionalIncludeDirectories) + ..\..\thirdParty\opencv320\build\include;%(AdditionalIncludeDirectories) + /D_CRT_SECURE_NO_WARNINGS %(AdditionalOptions) Windows @@ -156,8 +158,8 @@ true true false - ..\..\thirdParty\opencv\build\x64\vc16\lib;..\build\x64\Release;%(AdditionalLibraryDirectories) - opencv_world480.lib;baseAlgorithm.lib;%(AdditionalDependencies) + ..\..\thirdParty\opencv320\build\x64\vc14\lib;..\build\x64\Release;%(AdditionalLibraryDirectories) + opencv_world320.lib;baseAlgorithm.lib;%(AdditionalDependencies) diff --git a/bagPositioning_test/bagPositioning_test.cpp b/bagPositioning_test/bagPositioning_test.cpp index 85a2bae..855b8f7 100644 --- a/bagPositioning_test/bagPositioning_test.cpp +++ b/bagPositioning_test/bagPositioning_test.cpp @@ -715,6 +715,21 @@ SSG_planeCalibPara _readCalibPara(char* fileName) return planePara; } +void _outputObjResult(char* fileName, std::vector& objOps) +{ + std::ofstream sw(fileName); + char dataStr[250]; + + int objSize = (int)objOps.size(); + for (int i = 0; i < objSize; i++) + { + sw << "obj_" << i << std::endl; + sprintf_s(dataStr, 250, " %g, %g, %g, %g", objOps[i].centerPos.x, objOps[i].centerPos.y, objOps[i].centerPos.z, objOps[i].centerPos.z_yaw); + sw << dataStr << std::endl; + } + sw.close(); +} + void _outputScanDataFile_self(char* fileName, SVzNL3DLaserLine* scanData, int lineNum, float lineV, int maxTimeStamp, int clockPerSecond) { @@ -2511,7 +2526,7 @@ void _outputScanDataFile_removeZeros(char* fileName, SVzNL3DLaserLine* scanData, #define TEST_COMPUTE_GRASP_POINT 1 #define TEST_COMPUTE_CALIB_PARA 0 -#define TEST_GROUP 27 +#define TEST_GROUP 28 #define TEST_TOP_VIEW_GROUP (TEST_GROUP - 8) #define TEST_TOP_ORIEN_GROUP (TEST_GROUP - 6) int main() @@ -2655,22 +2670,23 @@ int main() "F:\\ShangGu\\纸箱拆垛数据\\380×480mm纸箱RGB点云及2D图像\\", //16 "F:\\ShangGu\\纸箱拆垛数据\\380×580mm纸箱RGB点云及2d图像\\", //17 "F:\\ShangGu\\纸箱拆垛数据\\480×580mm纸箱rgb点云及2d图像\\", //18 + "F:\\ShangGu\\编织袋数据\\科一现场\\", //19 - "F:\\ShangGu\\编织袋数据\\编织袋RGBD识别方向\\", //19 - "F:\\ShangGu\\编织袋数据\\编织袋RGBD识别方向_2\\", //20 - "F:\\ShangGu\\编织袋数据\\侧抓数据\\", //21 - "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250419\\", //22 - "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250420-1\\", //23 - "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250420-2\\", //24 - "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250420-3\\", //25 - "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250420-4\\", //26 + "F:\\ShangGu\\编织袋数据\\编织袋RGBD识别方向\\", //20 + "F:\\ShangGu\\编织袋数据\\编织袋RGBD识别方向_2\\", //21 + "F:\\ShangGu\\编织袋数据\\侧抓数据\\", //22 + "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250419\\", //23 + "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250420-1\\", //24 + "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250420-2\\", //25 + "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250420-3\\", //26 + "F:\\ShangGu\\编织袋数据\\侧抓数据_现场\\20250420-4\\", //27 }; SVzNLRange fileIdx[TEST_GROUP] = { {0,176},{1,200},{1,166},{122,141},{1,65}, {1,29},{108,135},{0,200}, {1,200}, {1,12}, {2,4}, {1,5}, {1,1}, {1,3}, {11,11}, - {5,22},{1, 15},{1,15}, {1, 15}, + {5,22},{1, 15},{1,15}, {1, 15},{1,2}, {1,21},{1,28}, {3,3}, {1,51}, {4,83}, {1,74}, {1,61}, {1,84} }; @@ -2694,7 +2710,7 @@ int main() SG_bagPositionParam algoParam; int endGroup = TEST_GROUP - 1; - for (int grp = 17; grp <= 18; grp++) + for (int grp = 19; grp <= 19; grp++) { if (grp < 10) { @@ -2792,7 +2808,19 @@ int main() algoParam.growParam.minLTypeTreeLen = 50.0; //mm algoParam.growParam.minVTypeTreeLen = 50.0; //mm } - else if ( (grp >= 19) && (grp <= 20)) + else if (grp == 19) //纸箱拆垛数据\vizum数据 + { + algoParam.bagParam.bagL = 420; //袋子长65cm + algoParam.bagParam.bagW = 320; //袋子宽40cm + algoParam.bagParam.bagH = 70; //袋子高16cm + algoParam.growParam.maxLineSkipNum = 5; + algoParam.growParam.yDeviation_max = 20.0; + algoParam.growParam.maxSkipDistance = 20.0; + algoParam.growParam.zDeviation_max = 80;// algoParam.bagParam.bagH / 2; //袋子高度1/2 + algoParam.growParam.minLTypeTreeLen = 50.0; //mm + algoParam.growParam.minVTypeTreeLen = 50.0; //mm + } + else if ( (grp >= 20) && (grp <= 21)) { algoParam.bagParam.bagL = 750; //袋子长65cm algoParam.bagParam.bagW = 450; //袋子宽40cm @@ -2915,13 +2943,26 @@ int main() algoParam.cornerParam.jumpCornerTh_1 = 60; algoParam.cornerParam.jumpCornerTh_2 = 15; } - else if ( grp == 19) + else if (grp == 19) + { + char calibFile[250]; + sprintf_s(calibFile, "F:\\ShangGu\\编织袋数据\\科一现场\\ground_calib_para.txt"); + poseCalibPara = _readCalibPara(calibFile); + + algoParam.cornerParam.cornerTh = 45; //45度角 + algoParam.cornerParam.scale = 50; // algoParam.bagParam.bagH / 8; // 15; // algoParam.bagParam.bagH / 8; + algoParam.cornerParam.minEndingGap = 20;// algoParam.bagParam.bagW / 4; + algoParam.cornerParam.minEndingGap_z = 40; // algoParam.bagParam.bagH / 4; + algoParam.cornerParam.jumpCornerTh_1 = 60; + algoParam.cornerParam.jumpCornerTh_2 = 15; + } + else if ( grp == 20) { char calibFile[250]; sprintf_s(calibFile, "F:\\ShangGu\\编织袋数据\\编织袋RGBD识别方向\\ground_calib_para.txt"); poseCalibPara = _readCalibPara(calibFile); } - else if (grp == 20) + else if (grp == 21) { char calibFile[250]; sprintf_s(calibFile, "F:\\ShangGu\\编织袋数据\\编织袋RGBD识别方向_2\\ground_calib_para.txt"); @@ -2997,7 +3038,8 @@ int main() sprintf_s(_dbg_file, "%sresult\\LaserLine%d_result.txt", dataPath[grp], fidx); _outputScanDataFile_RGBD_obj(_dbg_file, laser3DPoints, lineNum, lineV, maxTimeStamp, clockPerSecond, objOps); - + sprintf_s(_dbg_file, "%sresult\\obj%d_result.txt", dataPath[grp], fidx); + _outputObjResult(_dbg_file, objOps); sprintf_s(_dbg_file, "%sresult\\LaserLine%d_result_img.png", dataPath[grp], fidx); cv::String imgName(_dbg_file); double rpy[3] = { -30, 15, 0 }; //{ 0,-45, 0 }; // diff --git a/bagPositioning_test/bagPositioning_test.vcxproj b/bagPositioning_test/bagPositioning_test.vcxproj index ee0b3f3..a012fc7 100644 --- a/bagPositioning_test/bagPositioning_test.vcxproj +++ b/bagPositioning_test/bagPositioning_test.vcxproj @@ -120,13 +120,14 @@ true _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true - ..\..\thirdParty\opencv\build\include; + ..\..\thirdParty\opencv320\build\include; + /D_CRT_SECURE_NO_WARNINGS %(AdditionalOptions) Console true - ..\..\thirdParty\opencv\build\x64\vc16\lib;..\build\x64\Debug;%(AdditionalLibraryDirectories) - opencv_world480d.lib;bagPositioning.lib;%(AdditionalDependencies) + ..\..\thirdParty\opencv320\build\x64\vc14\lib;..\build\x64\Debug;%(AdditionalLibraryDirectories) + opencv_world320d.lib;bagPositioning.lib;%(AdditionalDependencies) @@ -137,15 +138,16 @@ true NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true - ..\..\thirdParty\opencv\build\include; + ..\..\thirdParty\opencv320\build\include; + /D_CRT_SECURE_NO_WARNINGS %(AdditionalOptions) Console true true true - ..\..\thirdParty\opencv\build\x64\vc16\lib;..\build\x64\Release;%(AdditionalLibraryDirectories) - opencv_world480.lib;bagPositioning.lib;%(AdditionalDependencies) + ..\..\thirdParty\opencv320\build\x64\vc14\lib;..\build\x64\Release;%(AdditionalLibraryDirectories) + opencv_world320.lib;bagPositioning.lib;%(AdditionalDependencies) diff --git a/baseAlgorithm/baseAlgorithm.vcxproj b/baseAlgorithm/baseAlgorithm.vcxproj index e68acff..84eca3c 100644 --- a/baseAlgorithm/baseAlgorithm.vcxproj +++ b/baseAlgorithm/baseAlgorithm.vcxproj @@ -78,12 +78,12 @@ true - ..\..\thirdParty\VzNLSDK\Inc;..\..\thirdParty\opencv\build\include;..\sourceCode;..\sourceCode\inc;$(IncludePath) + ..\..\thirdParty\VzNLSDK\Inc;..\..\thirdParty\opencv320\build\include;..\sourceCode;..\sourceCode\inc;$(IncludePath) $(SolutionDir)build\$(Platform)\$(Configuration)\ false - ..\..\thirdParty\VzNLSDK\Inc;..\..\thirdParty\opencv\build\include;..\sourceCode;..\sourceCode\inc;$(IncludePath) + ..\..\thirdParty\VzNLSDK\Inc;..\..\thirdParty\opencv320\build\include;..\sourceCode;..\sourceCode\inc;$(IncludePath) $(SolutionDir)build\$(Platform)\$(Configuration)\ @@ -128,14 +128,15 @@ true NotUsing pch.h - ..\..\thirdParty\opencv\build\include;%(AdditionalIncludeDirectories) + ..\..\thirdParty\opencv320\build\include;%(AdditionalIncludeDirectories) + /D_CRT_SECURE_NO_WARNINGS %(AdditionalOptions) Windows true false - ..\..\thirdParty\opencv\build\x64\vc16\lib;%(AdditionalLibraryDirectories) - opencv_world480d.lib;%(AdditionalDependencies) + ..\..\thirdParty\opencv320\build\x64\vc14\lib;%(AdditionalLibraryDirectories) + opencv_world320d.lib;%(AdditionalDependencies) @@ -148,7 +149,8 @@ true NotUsing pch.h - ..\..\thirdParty\opencv\build\include;%(AdditionalIncludeDirectories) + ..\..\thirdParty\opencv320\build\include;%(AdditionalIncludeDirectories) + /D_CRT_SECURE_NO_WARNINGS %(AdditionalOptions) Windows @@ -156,8 +158,8 @@ true true false - ..\..\thirdParty\opencv\build\x64\vc16\lib;%(AdditionalLibraryDirectories) - opencv_world480.lib;%(AdditionalDependencies) + ..\..\thirdParty\opencv320\build\x64\vc14\lib;%(AdditionalLibraryDirectories) + opencv_world320.lib;%(AdditionalDependencies) diff --git a/sourceCode/SG_bagPositioning.cpp b/sourceCode/SG_bagPositioning.cpp index e9c3703..2adcba2 100644 --- a/sourceCode/SG_bagPositioning.cpp +++ b/sourceCode/SG_bagPositioning.cpp @@ -591,17 +591,34 @@ SSG_peakRgnInfo _getRgnObjInfo( double dist_v0v3 = sqrt(pow(vertices[0].x - vertices[3].x, 2) + pow(vertices[0].y - vertices[3].y, 2)); double width_diff = abs(dist_v0v3 - width); double pose_yaw; - if (width_diff < 10.0) + if (CV_VERSION == "3.2.0") { - pose_yaw = -rect.angle; + if (width_diff < 10.0)//width + { + pose_yaw = -rect.angle; + } + else //ȷ + { + pose_yaw = -rect.angle - 90; + if (pose_yaw < -90) + pose_yaw = 180 + pose_yaw; + } } - else + else //if (CV_VERSION == "4.8.0") { - pose_yaw = -rect.angle + 90; - if (pose_yaw > 90) - pose_yaw = 180 - pose_yaw; + if (width_diff < 10.0) //width + { + pose_yaw = -rect.angle; + } + else//ȷ + { + pose_yaw = -rect.angle + 90; + if (pose_yaw > 90) + pose_yaw = pose_yaw - 180; + } } + //vertices[0]-vertices[3]ľ룬 // diff --git a/sourceCode/SG_baseFunc.cpp b/sourceCode/SG_baseFunc.cpp index 9a7aa81..bb1da62 100644 --- a/sourceCode/SG_baseFunc.cpp +++ b/sourceCode/SG_baseFunc.cpp @@ -3,6 +3,7 @@ #include #include #include +#include SVzNL3DRangeD sg_getScanDataROI( SVzNL3DLaserLine* laser3DPoints,