From d74de2ccf587e0779225ab0a02dd01782fdef36f Mon Sep 17 00:00:00 2001 From: RCi <15089880081@163.com> Date: Fri, 26 Jul 2024 11:47:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HandleAiUi-new/algo/ALGO_Inspection.h | 62 +++++++++-------- .../appConfig/appconfigStruct.h | 2 +- HanddleAI/HandleAiUi-new/appCore.hpp | 2 +- HanddleAI/HandleAiUi-new/detProcess.hpp | 11 +-- HanddleAI/HandleAiUi-new/mainwindow.h | 2 + .../uiModule/uiModule_switchProduct.h | 2 +- .../config/productConfig/ASR1006.json | 2 +- .../config/productConfig/MDS9718.json | 68 +++++++++++++++++-- .../config/productConfig/MDS9718B.json | 66 ++++++++++++++++-- 9 files changed, 170 insertions(+), 47 deletions(-) diff --git a/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h b/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h index 7815443c..ff0ebef2 100644 --- a/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h +++ b/HanddleAI/HandleAiUi-new/algo/ALGO_Inspection.h @@ -11,7 +11,7 @@ cv::Mat pinHandleAiEvaluate(std::shared_ptr data, cv::Mat& src, bool pinHalconEvaluate(std::shared_ptr data, cv::Rect& Result, cv::Mat& src, cv::Mat& out, int productType); //公头定位 -std::vector pinDetEvaluate(std::shared_ptr data ,cv::Mat& src, handleAiModelManager* _handleAiModelManager) +std::vector pinDetEvaluate(std::shared_ptr data, cv::Mat& src, handleAiModelManager* _handleAiModelManager) { std::vector result; handleAiModelDet* detPtr = _handleAiModelManager->getDetModel(data->_productDataStruct.handleAiData.detModelName); @@ -27,7 +27,7 @@ std::vector getpinHandleAiEvaluateRect(std::shared_ptr getTopPoints(std::vector& rectangles) { double minX, maxX, avgX; double minY, maxY, avgY; - for (auto data : rectangles) + for (auto data : rectangles) { std::cout << data.y << std::endl; } @@ -98,9 +98,9 @@ void halconPaint(cv::Mat& out, const std::vector& AllPos) std::vectoreachLineX;//记录 for (auto& vec : groupedRectangles)//画竖线 { - cv::line(out, - cv::Point(vec[0].x + vec[0].width / 2, 0), - cv::Point(vec[0].x + vec[0].width / 2, out.rows), + cv::line(out, + cv::Point(vec[0].x + vec[0].width / 2, 0), + cv::Point(vec[0].x + vec[0].width / 2, out.rows), cv::Scalar(255, 255, 255), 1); eachLineX.push_back(vec[0].x + vec[0].width / 2); } @@ -110,9 +110,9 @@ void halconPaint(cv::Mat& out, const std::vector& AllPos) std::to_string(eachLineX[i] - eachLineX[i - 1]), cv::Point(eachLineX[i - 1], 20), 1, 2, cv::Scalar(255, 255, 255)); - cv::line(out, - cv::Point(eachLineX[i - 1],20), - cv::Point(eachLineX[i], 20), + cv::line(out, + cv::Point(eachLineX[i - 1], 20), + cv::Point(eachLineX[i], 20), cv::Scalar(255, 255, 255), 1); } for (int i = 0; i < groupedRectangles.size(); i++)//画竖线间的横线 @@ -129,23 +129,23 @@ void halconPaint(cv::Mat& out, const std::vector& AllPos) cv::Scalar(0, 255, 0), 1); cv::putText(out, std::to_string(range), - cv::Point(eachLineX[i], mid.y-5), 1, 2, + cv::Point(eachLineX[i], mid.y - 5), 1, 2, cv::Scalar(0, 255, 0)); } } } -void halconEvaluate(std::shared_ptr data, std::vectorconnectorPos,std::vector&halconImgResult) +void halconEvaluate(std::shared_ptr data, std::vectorconnectorPos, std::vector& halconImgResult) { cv::Mat src = data->oriImgs[0]; for (auto& box : connectorPos) { cv::Mat halconMatResult; - bool halconBoolResult = pinHalconEvaluate(data,BboxToRect(box), src, halconMatResult, 5); + bool halconBoolResult = pinHalconEvaluate(data, BboxToRect(box), src, halconMatResult, 5); if (halconBoolResult == true) halconImgResult.push_back(halconMatResult);//HALCON检测结果 } -} -bool pinHalconEvaluate(std::shared_ptr data, cv::Rect& Result, cv::Mat& src,cv::Mat& out,int productType) +} +bool pinHalconEvaluate(std::shared_ptr data, cv::Rect& Result, cv::Mat& src, cv::Mat& out, int productType) { #pragma region halcon变量定义 //测量 @@ -183,7 +183,7 @@ bool pinHalconEvaluate(std::shared_ptr data, cv::Rect& Result, cv::Mat hv_in_ShapePath = "./halconModel"; // - HTuple hv_in_FilePath=".\\halconFiles\\"; + HTuple hv_in_FilePath = ".\\halconFiles\\"; HTuple hv_out_OK_Pings; HTuple hv_out_NG_Pings; // @@ -211,27 +211,27 @@ bool pinHalconEvaluate(std::shared_ptr data, cv::Rect& Result, cv::Mat break; } int flag = hv_out_Flag_INS.D(); - if(flag ==1) + if (flag == 1) { if (productType == 5) { halconImg.copyTo(out); if (out.channels() == 1) cv::cvtColor(out, out, cv::COLOR_GRAY2BGR); - int hv_out_OK_PingsSize = hv_out_OK_Pings.Length(), hv_out_NG_PingsSize = hv_out_NG_Pings.Length(); - std::cout << "OKSize"<< hv_out_OK_PingsSize<<"NGSize"<< hv_out_NG_PingsSize << std::endl; - std::vectorokPos, ngPos,AllPoints; - for (int i = 0; i < hv_out_OK_PingsSize/4; i++) + int hv_out_OK_PingsSize = hv_out_OK_Pings.Length(), hv_out_NG_PingsSize = hv_out_NG_Pings.Length(); + std::cout << "OKSize" << hv_out_OK_PingsSize << "NGSize" << hv_out_NG_PingsSize << std::endl; + std::vectorokPos, ngPos, AllPoints; + for (int i = 0; i < hv_out_OK_PingsSize / 4; i++) { cv::Rect rect( - hv_out_OK_Pings[i * 4 ].D(), - hv_out_OK_Pings[i * 4 +1].D(), + hv_out_OK_Pings[i * 4].D(), + hv_out_OK_Pings[i * 4 + 1].D(), hv_out_OK_Pings[i * 4 + 2].D(), hv_out_OK_Pings[i * 4 + 3].D()); okPos.push_back(rect); AllPoints.push_back(rect); } - for (int i = 0; i < hv_out_NG_PingsSize/4; i++) + for (int i = 0; i < hv_out_NG_PingsSize / 4; i++) { cv::Rect rect( hv_out_NG_Pings[i + 1].D(), @@ -250,6 +250,7 @@ bool pinHalconEvaluate(std::shared_ptr data, cv::Rect& Result, cv::Mat } if (hv_out_Pings_X.Length() > 0) data->halconOK = false; + std::cout << "HALCON FAILURE" << std::endl; out = halconImg; return false; //Pings_ROI(ho_in_Image, hv_in_ShapePath, hv_in_Parameter, &hv_out_ROI_Value, &hv_out_Flag_ROI); @@ -292,6 +293,7 @@ cv::Mat pinHandleAiEvaluate(std::shared_ptr data, cv::Mat& src, cv::Rect rect = originRect; cv::Mat clsImg = cutImg2Cls(rect, src); int clsRes = clsPtr->Evaluate(clsImg); + clsRes = 1; cv::Scalar color = cv::Scalar(0, 0, 255, 30); std::string clsFileName; switch (clsRes) @@ -315,10 +317,10 @@ cv::Mat pinHandleAiEvaluate(std::shared_ptr data, cv::Mat& src, //返回结果图 return Paint; } -void handleAiEvaluate(std::shared_ptr data, handleAiModelManager* _handleAiModelManager, std::vectorconnectorPos, std::vector&aiImgResult) +void handleAiEvaluate(std::shared_ptr data, handleAiModelManager* _handleAiModelManager, std::vectorconnectorPos, std::vector& aiImgResult) { cv::Mat src = data->oriImgs[0]; - for(auto& handleAiData: data->_productDataStruct.handleAiData.detResultHandle) + for (auto& handleAiData : data->_productDataStruct.handleAiData.detResultHandle) { handleAiModelSeg* segPtr = _handleAiModelManager->getSegModel(handleAiData.segModelName); handleAiModelCls* clsPtr = _handleAiModelManager->getClsModel(handleAiData.clsModelName); @@ -353,21 +355,21 @@ void ALGO_Inspection(std::shared_ptr data, handleAiModelManager* _hand int errorCode = ALGO_InspectionErrorCheck(data); if (errorCode != 0) { - qDebug() << __FUNCDNAME__ << __LINE__ << "errorCheck ERR"<< errorCode; + qDebug() << __FUNCDNAME__ << __LINE__ << "errorCheck ERR" << errorCode; return; } data->algoStartTime = std::chrono::high_resolution_clock::now(); cv::Mat src = data->oriImgs[0]; //使用det获取每个公头的位置 - std::vector detResult = pinDetEvaluate(data,src, _handleAiModelManager); + std::vector detResult = pinDetEvaluate(data, src, _handleAiModelManager); //std::vector detResult = { { 2101.71411,1821.34961,1245.11145 ,1453.68127}, // {3365.11548,1816.07214,1240.55957,1454.79187} }; if (detResult.size() == 0) { return; - } + } //过滤结果,获取用于handleAi/HALCON检测的rect - std::vector pinPos = getpinHandleAiEvaluateRect(data,src, detResult); + std::vector pinPos = getpinHandleAiEvaluateRect(data, src, detResult); //HANDLEAI std::vectoraiImgResult; @@ -384,6 +386,6 @@ void ALGO_Inspection(std::shared_ptr data, handleAiModelManager* _hand data->resultImgs.push_back(tiledImages(aiImgResult)); if (halconImgResult.size() > 0) data->resultImgs.push_back(tiledImages(halconImgResult)); - + } diff --git a/HanddleAI/HandleAiUi-new/appConfig/appconfigStruct.h b/HanddleAI/HandleAiUi-new/appConfig/appconfigStruct.h index e3cae2b9..8988f36b 100644 --- a/HanddleAI/HandleAiUi-new/appConfig/appconfigStruct.h +++ b/HanddleAI/HandleAiUi-new/appConfig/appconfigStruct.h @@ -188,7 +188,7 @@ public: mutex->unlock(); return result; } - int currentProductIndex;//switchProductWidget + int currentProductIndex = 0;//switchProductWidget std::vector* productDatasPtr = nullptr;//appConfig std::mutex* mutex = nullptr;//appConfig }; diff --git a/HanddleAI/HandleAiUi-new/appCore.hpp b/HanddleAI/HandleAiUi-new/appCore.hpp index 1818667c..44a0d7fd 100644 --- a/HanddleAI/HandleAiUi-new/appCore.hpp +++ b/HanddleAI/HandleAiUi-new/appCore.hpp @@ -9,7 +9,7 @@ #include #include -#define enableHandleAiModel 0 +#define enableHandleAiModel 1 #define disableBackEndCheck 1 #define disableeAlgo 0 #define enableHideConsle 1 diff --git a/HanddleAI/HandleAiUi-new/detProcess.hpp b/HanddleAI/HandleAiUi-new/detProcess.hpp index 4f679815..df1b953d 100644 --- a/HanddleAI/HandleAiUi-new/detProcess.hpp +++ b/HanddleAI/HandleAiUi-new/detProcess.hpp @@ -177,7 +177,7 @@ public: emit _core._qtFunc.uiModuleLocationMapSetProductSignStatus(Pos,1); std::cout << "arm @Pos:" << Pos; - std::shared_ptr data = _detDataManager.insertDetData("Camera1", "TEST", 1, 1); + std::shared_ptr data = _detDataManager.insertDetData("Camera1", currentSn, 1, 1); data->oriShowIndex = 0; data->resShowIndex = 0; data->armPos = Pos; @@ -267,15 +267,15 @@ public: emit _core._qtFunc.addDashBoardData(1, data->aiDetOK); emit _core._qtFunc.uiModuleLocationMapSetProductSignStatus(data->armPos, (data->halconOK==true&& data->aiDetOK==true)?2:3); - bool finalOk = (data->halconOK == true && data->aiDetOK == true)? true :false; - if(finalOk=true) + bool finalOk = (data->halconOK == true || data->aiDetOK == true)? true :false; + if(finalOk=false) { for (auto showMat : data->resultImgs) { QPixmap pixmap; cvMatToQPixMap(showMat, pixmap); showImgPack* pack = new showImgPack(); - emit _core._qtFunc.uiModuleImageDoubleCheckQdialogShowWindows(pixmap); + emit _core._qtFunc.uiModuleImageDoubleCheckQdialogShowWindows(pixmap); } } auto productData = _core._productDataCache.get(currentSn); @@ -319,7 +319,8 @@ public slots: _core._detGlobalData.productTypeStr = _core._appConfig.productDatas[productTypeIn].name; _core._appConfig.productDatasMutex.unlock(); _core._detGlobalData.productType = productTypeIn; - _core._detGlobalData.currentSn = SN.toStdString(); + if(_core._detGlobalData.currentSn!="") + _core._detGlobalData.currentSn = SN.toStdString(); currentSn = SN.toStdString(); _triggerManager.sendFinsMsg("write_short_350_" + QString::number(_core._appConfig.productDatas[productTypeIn].indexOfArm)); _triggerManager.sendFinsMsg("write_short_351_1"); diff --git a/HanddleAI/HandleAiUi-new/mainwindow.h b/HanddleAI/HandleAiUi-new/mainwindow.h index d8ed0816..c384888b 100644 --- a/HanddleAI/HandleAiUi-new/mainwindow.h +++ b/HanddleAI/HandleAiUi-new/mainwindow.h @@ -271,6 +271,8 @@ signals: protected: void mouseDoubleClickEvent(QMouseEvent* event) override { + if (event->pos().y() > 35) + return toggleMaximize(reverse); QMainWindow::mouseDoubleClickEvent(event); } diff --git a/HanddleAI/HandleAiUi-new/uiModule/uiModule_switchProduct.h b/HanddleAI/HandleAiUi-new/uiModule/uiModule_switchProduct.h index 272cbc5f..3b2d00f4 100644 --- a/HanddleAI/HandleAiUi-new/uiModule/uiModule_switchProduct.h +++ b/HanddleAI/HandleAiUi-new/uiModule/uiModule_switchProduct.h @@ -91,7 +91,7 @@ public: }); connect(productNameTypeSwitch, &QComboBox::currentTextChanged, this, [=]() { - productSelectFresh(productNameTypeSwitch->currentIndex()); + //productSelectFresh(productNameTypeSwitch->currentIndex()); }); } void productSelectFresh(int index) diff --git a/configBackup/config/productConfig/ASR1006.json b/configBackup/config/productConfig/ASR1006.json index 12518f0e..d6900317 100644 --- a/configBackup/config/productConfig/ASR1006.json +++ b/configBackup/config/productConfig/ASR1006.json @@ -43,7 +43,7 @@ } ] }, - "imgPosPath":"./imgPosTip/Test1.jpg", + "imgPosPath":"./imgPosTip/asr1006.png", "productSign": { "0": diff --git a/configBackup/config/productConfig/MDS9718.json b/configBackup/config/productConfig/MDS9718.json index cec0d5d0..01d28c16 100644 --- a/configBackup/config/productConfig/MDS9718.json +++ b/configBackup/config/productConfig/MDS9718.json @@ -2,7 +2,7 @@ "productName":"APEX18", "customerPartNumber":"DS-C9718", "foxconnPartNumber":"800-102754-03", - "imgPosPath":"./imgPosTip/Test1.jpg", + "imgPosPath":"./imgPosTip/apex18.png", "productIndex":6, "baseX":0.00, "baseY":0.00, @@ -10,7 +10,7 @@ "baseRx":0.00, "baseRy":0.00, "baseRz":0.00, - "connectorAmout":-1, + "connectorAmout":96, "halconAlgoIndex":0, "cameraSetting": { @@ -31,7 +31,7 @@ [ { "detResultIndex":[0], - "segModelName":"ASR-Seg.BHD", + "segModelName":"APEX-Seg.BHD", "segNgIndex":[0,1,2], "segGpuIndex":0, "clsModelName":"ASR-Cls.BHD", @@ -43,7 +43,67 @@ } } ] + }, + "productSign": + { + "1": { + "x": 1305, + "y": 10, + "w": 150, + "h": 160, + "sign": "鍒�1琛�1" + }, + "2": { + "x": 1305, + "y": 170, + "w": 150, + "h": 160, + "sign": "鍒�1琛�2" + }, + "3": { + "x": 1305, + "y": 330, + "w": 150, + "h": 160, + "sign": "鍒�1琛�3" + }, + "4": { + "x": 1305, + "y": 490, + "w": 150, + "h": 160, + "sign": "鍒�1琛�4" + }, + "5": { + "x": 1305, + "y": 650, + "w": 150, + "h": 160, + "sign": "鍒�1琛�5" + }, + "6": { + "x": 1305, + "y": 810, + "w": 150, + "h": 160, + "sign": "鍒�1琛�6" + }, + "7": { + "x": 1305, + "y": 970, + "w": 150, + "h": 160, + "sign": "鍒�1琛�7" + }, + "8": { + "x": 1305, + "y": 1130, + "w": 150, + "h": 160, + "sign": "鍒�1琛�8" + } } - + + } \ No newline at end of file diff --git a/configBackup/config/productConfig/MDS9718B.json b/configBackup/config/productConfig/MDS9718B.json index ad74aea6..1cf6e18a 100644 --- a/configBackup/config/productConfig/MDS9718B.json +++ b/configBackup/config/productConfig/MDS9718B.json @@ -2,7 +2,7 @@ "productName":"APEX18B", "customerPartNumber":"DS-C9718B", "foxconnPartNumber":"800-102754-03B", - "imgPosPath":"./imgPosTip/Test1.jpg", + "imgPosPath":"./imgPosTip/apex18.png", "productIndex":7, "baseX":0.00, "baseY":0.00, @@ -10,7 +10,7 @@ "baseRx":0.00, "baseRy":0.00, "baseRz":0.00, - "connectorAmout":-1, + "connectorAmout":96, "halconAlgoIndex":0, "cameraSetting": { @@ -31,7 +31,7 @@ [ { "detResultIndex":[0], - "segModelName":"ASR-Seg.BHD", + "segModelName":"APEX-Seg.BHD", "segNgIndex":[0,1,2], "segGpuIndex":0, "clsModelName":"ASR-Cls.BHD", @@ -43,7 +43,65 @@ } } ] + }, +"productSign": + { + "1": { + "x": 1305, + "y": 10, + "w": 150, + "h": 160, + "sign": "鍒�1琛�1" + }, + "2": { + "x": 1305, + "y": 170, + "w": 150, + "h": 160, + "sign": "鍒�1琛�2" + }, + "3": { + "x": 1305, + "y": 330, + "w": 150, + "h": 160, + "sign": "鍒�1琛�3" + }, + "4": { + "x": 1305, + "y": 490, + "w": 150, + "h": 160, + "sign": "鍒�1琛�4" + }, + "5": { + "x": 1305, + "y": 650, + "w": 150, + "h": 160, + "sign": "鍒�1琛�5" + }, + "6": { + "x": 1305, + "y": 810, + "w": 150, + "h": 160, + "sign": "鍒�1琛�6" + }, + "7": { + "x": 1305, + "y": 970, + "w": 150, + "h": 160, + "sign": "鍒�1琛�7" + }, + "8": { + "x": 1305, + "y": 1130, + "w": 150, + "h": 160, + "sign": "鍒�1琛�8" + } } - } \ No newline at end of file