From cb681bd97a9e09a4043d5d6551ffcd65b7aa9b1c Mon Sep 17 00:00:00 2001 From: "15089880081@163.com" <15089880081@163.com> Date: Tue, 21 May 2024 18:11:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E6=9C=BA=E6=A8=A1=E5=9D=97=E5=BE=85?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HandleAiUi-new/back/algorithmThread.cpp | 4 +- .../HandleAiUi-new/back/algorithmThread.h | 6 - .../HandleAiUi-new/back/backEndController.cpp | 1 + .../HandleAiUi-new/back/backEndController.h | 5 +- HanddleAI/HandleAiUi-new/back/backStruct.h | 29 ++- .../HandleAiUi-new/back/cameraController.cpp | 37 +++- .../HandleAiUi-new/back/cameraController.h | 70 ++++++-- .../back/imgSaveThreadController.cpp | 12 ++ .../back/imgSaveThreadController.h | 115 ++++++++++++ .../back/threadPoolController.cpp | 166 +----------------- .../back/threadPoolController.h | 98 +---------- HanddleAI/HandleAiUi-new/back/toolkit.cpp | 2 +- HanddleAI/HandleAiUi-new/exe_main.cpp | 45 ----- lib/Hd_3DCameraLMI_module_PointLazer.exp | Bin 784 -> 772 bytes lib/Hd_3DCameraLMI_module_PointLazer.lib | Bin 2276 -> 2276 bytes lib/Hd_DalsaCamera_module.exp | Bin 763 -> 751 bytes lib/Hd_DalsaCamera_module.lib | Bin 2120 -> 2120 bytes lib/Hd_FinsTcp_module.exp | Bin 755 -> 743 bytes lib/Hd_FinsTcp_module.lib | Bin 2064 -> 2064 bytes lib/Hd_MvCamera_module_GENTL.exp | Bin 768 -> 756 bytes lib/Hd_MvCamera_module_GENTL.lib | Bin 2164 -> 2164 bytes lib/Hd_MvCamera_module_GIGE.exp | Bin 767 -> 755 bytes lib/Hd_MvCamera_module_GIGE.lib | Bin 2148 -> 2148 bytes lib/Hd_ResultsSummary_module.exp | Bin 768 -> 756 bytes lib/Hd_ResultsSummary_module.lib | Bin 2164 -> 2164 bytes lib/Hd_SocketModule_ModbusTcp.exp | Bin 1513 -> 1501 bytes lib/Hd_SocketModule_ModbusTcp.lib | Bin 3446 -> 3446 bytes lib/Hd_VirtualCamera_ReadFile.exp | Bin 771 -> 759 bytes lib/Hd_VirtualCamera_ReadFile.lib | Bin 2176 -> 2176 bytes 29 files changed, 260 insertions(+), 330 deletions(-) create mode 100644 HanddleAI/HandleAiUi-new/back/imgSaveThreadController.cpp create mode 100644 HanddleAI/HandleAiUi-new/back/imgSaveThreadController.h delete mode 100644 HanddleAI/HandleAiUi-new/exe_main.cpp diff --git a/HanddleAI/HandleAiUi-new/back/algorithmThread.cpp b/HanddleAI/HandleAiUi-new/back/algorithmThread.cpp index b96a3438..f912063c 100644 --- a/HanddleAI/HandleAiUi-new/back/algorithmThread.cpp +++ b/HanddleAI/HandleAiUi-new/back/algorithmThread.cpp @@ -546,7 +546,7 @@ void algoThread::run() Camera1_Algo(data); break; } - oriSaveThread->saveOriImg(data);//ä¿�存原图 + //oriSaveThread->saveOriImg(data);//ä¿�存原图 auto end = std::chrono::high_resolution_clock::now(); auto duration = std::chrono::duration_cast(end - start); @@ -556,7 +556,7 @@ void algoThread::run() // data->SNcode = snDatas->waitForSn(data->timeCode); if (data->resultImgs.size() > 0) { - resSaveThread->saveResImg(data);//ä¿�存结果图 + //resSaveThread->saveResImg(data);//ä¿�存结果图 bridge.front.showImg("Algorithm", data->resultImgs[0], threadId);//显示原图 //cout << "algoEnd" << data->algoThreadIndex; } diff --git a/HanddleAI/HandleAiUi-new/back/algorithmThread.h b/HanddleAI/HandleAiUi-new/back/algorithmThread.h index 49c396b0..ec13055c 100644 --- a/HanddleAI/HandleAiUi-new/back/algorithmThread.h +++ b/HanddleAI/HandleAiUi-new/back/algorithmThread.h @@ -715,10 +715,7 @@ public: handleAiModel* modelPtr; sqlController* sql; threadConroller* tController; - imgSaveThread* oriSaveThread; - imgSaveThread* resSaveThread; sncodeCls* snDatas; - cameraImages* cameraImgs; QMutex detQueueMutex; QQueue detQueue; @@ -736,10 +733,7 @@ public: tController = threadConroller; modelPtr = &threadConroller->models; sql = threadConroller->sql; - oriSaveThread = threadConroller->oriSaveThread; - resSaveThread = threadConroller->resSaveThread; snDatas = &threadConroller->snDatas; - cameraImgs = &threadConroller->cameraImgs; } bool addDetTask(detData*);//Ìí¼ÓÈÎÎñ diff --git a/HanddleAI/HandleAiUi-new/back/backEndController.cpp b/HanddleAI/HandleAiUi-new/back/backEndController.cpp index 5844785d..a9709bba 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndController.cpp +++ b/HanddleAI/HandleAiUi-new/back/backEndController.cpp @@ -8,6 +8,7 @@ backEndController::backEndController() _jsonConfiguration = new jsonConfiguration(); _triggerController = new triggerController(); _cameraController = new cameraController(); + _threadConroller = new threadConroller(); std::vector> futures;//Òì²½³õʼ»¯ futures.push_back(std::async(std::launch::async, &triggerController::init, _triggerController, this)); futures.push_back(std::async(std::launch::async, &cameraController::init, _cameraController, this)); diff --git a/HanddleAI/HandleAiUi-new/back/backEndController.h b/HanddleAI/HandleAiUi-new/back/backEndController.h index 2338d776..dc7ed763 100644 --- a/HanddleAI/HandleAiUi-new/back/backEndController.h +++ b/HanddleAI/HandleAiUi-new/back/backEndController.h @@ -5,14 +5,17 @@ class triggerController; class cameraController; class jsonConfiguration; +class threadConroller; class backEndController :public QObject { Q_OBJECT public: bool init = false; + jsonConfiguration* _jsonConfiguration; + triggerController* _triggerController;//´¥·¢Æ÷ cameraController* _cameraController; - jsonConfiguration* _jsonConfiguration; + threadConroller* _threadConroller; backEndController(); ~backEndController(); signals: diff --git a/HanddleAI/HandleAiUi-new/back/backStruct.h b/HanddleAI/HandleAiUi-new/back/backStruct.h index c359208b..6a58e714 100644 --- a/HanddleAI/HandleAiUi-new/back/backStruct.h +++ b/HanddleAI/HandleAiUi-new/back/backStruct.h @@ -1,9 +1,10 @@ #include +#include typedef Base* (*CreateFunction)(); typedef void (*ReleaseFunction)(Base* animal); -struct correctionStructx +struct correctionStruct { std::vector in_X_X0Y; std::vector in_Y_X0Y; @@ -29,4 +30,30 @@ typedef struct { ReleaseFunction destory_ptr; // ÊÍ·Å int showIndex; }cameraModule; + +static void createDirectoryIfNotExists(const std::string& path) { + // ¼ì²é·¾¶ÊÇ·ñ´æÔÚ + if (!std::filesystem::exists(path)) { + // ´´½¨Â·¾¶ + + std::filesystem::create_directories(path); + //std::cout << "ÒÑ´´½¨Îļþ¼Ð: " << path << std::endl; + } + else {/* + std::cout << "Îļþ¼ÐÒÑ´æÔÚ: " << path << std::endl;*/ + } +} +static std::string getCurrentDateTime() { + + // »ñÈ¡µ±Ç°Ê±¼äµã + auto now = std::chrono::system_clock::now(); + + // ת»»Îª×Ö·û´® + auto currentTime = std::chrono::system_clock::to_time_t(now); + auto ms = std::chrono::duration_cast(now.time_since_epoch()) % 100; + std::tm* localTime = std::localtime(¤tTime); + std::stringstream ss; + ss << std::put_time(localTime, "%H-%M-%S") << "-" << std::setfill('0') << std::setw(2) << ms.count(); + return ss.str(); +} #pragma once \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/back/cameraController.cpp b/HanddleAI/HandleAiUi-new/back/cameraController.cpp index de01354a..166c769b 100644 --- a/HanddleAI/HandleAiUi-new/back/cameraController.cpp +++ b/HanddleAI/HandleAiUi-new/back/cameraController.cpp @@ -44,14 +44,13 @@ void camera::run() while (runFlag) { getCameraImg(camera_mat); - if (camera_mat.size() > 0) + while(camera_mat.size()>0) { int size = imgQueue.size(); for (auto img : camera_mat) { imgQueue.enqueue(img); - //emit _backEndController->sendPixmapImageWidgetByIndex(cvMatToQPixMap(img), imgWidgetOri, index); - if (lastUpdateTime.elapsed() > 200) + if (lastUpdateTime.elapsed() > 200)//ÏÔʾÔÚ½çÃæ { lastUpdateTime.start(); // ¼Ç¼±¾´Î¸üÐÂʱ¼ä QPixmap pixmap; @@ -62,13 +61,37 @@ void camera::run() pack->index = index; emit S1(pack); } + else + { + showLost++; + qDebug() << cameraModulePtr.moduleName << "Lost show"; + } + camera_mat.clear(); } //·ÀÖ¹¹ý´ó - //while (imgQueue.size() > 0) - //{ - // imgQueue.dequeue(); - //} + while (imgQueue.size() > 5) + { + imgQueue.dequeue(); + imgLost++; + qDebug() << cameraModulePtr.moduleName << "Lost img"; + } + + getCameraImg(camera_mat); + } + if (data != nullptr) + { + data->mutex->lock(); + int imgCnt = data->imgAmountMin; + getCameraImg(camera_mat); + while (camera_mat.size() > 0) + { + for (auto img : camera_mat) + { + + } + } + data->mutex->unlock(); } QThread::msleep(100); } diff --git a/HanddleAI/HandleAiUi-new/back/cameraController.h b/HanddleAI/HandleAiUi-new/back/cameraController.h index aefb4371..e000139b 100644 --- a/HanddleAI/HandleAiUi-new/back/cameraController.h +++ b/HanddleAI/HandleAiUi-new/back/cameraController.h @@ -11,6 +11,8 @@ #include #include #include +#include +//Ó²´¥·¢ÒªÇóÔÚ´¥·¢Ïà»úǰ¸ø³ö´¥·¢ÐźŠclass backEndController; class camera : public QThread { @@ -25,12 +27,14 @@ public: QThread::msleep(2000); } void run(); - void getCameraImg(std::vector& mats) + void getImgQueueSize(); + + void Process(detData* dataIn) { - QByteArray task_name; - if (cameraModulePtr.module_ptr->sendData(mats, task_name)) - qDebug() << __FUNCTION__ << " line:" << __LINE__ << "camera_mat size:" << mats.size(); + data = dataIn; } + + //Ïà»ú²Ù×÷ bool trigger() { if (!cameraModulePtr.module_ptr->run()) @@ -40,15 +44,46 @@ public: } return true; } - void getImgQueueSize(); + void getCameraImg(std::vector& mats) + { + QByteArray task_name; + if (cameraModulePtr.module_ptr->sendData(mats, task_name)) + qDebug() << __FUNCTION__ << " line:" << __LINE__ << "camera_mat size:" << mats.size(); + } + void setDigitalShift(float value) + { + sendData("DigitalShift_" + std::to_string(value)); + } + void setExposureTime(float value) + { + sendData("exposure_" + std::to_string(value)); + } + void setUserSet(int value) + { + sendData("userset_" + std::to_string(value)); + } + signals: void S1(showImgPack*); private: + detData* data = nullptr; + void sendData(std::string str) + { + QByteArray task_name(QByteArray::fromStdString(str)); + std::vector camera_mat; + if (!cameraModulePtr.module_ptr->sendData(camera_mat, task_name)) + qCritical() << "[Error] " << "set exposure error!"; + } + int index = 0; + int timeout = 5000; cameraModule cameraModulePtr; QQueueimgQueue; backEndController* _backEndController; bool runFlag = true; + + int imgLost = 0;//δȡÓôӶø¶ªÊ§µÄͼƬÊýÁ¿ + int showLost = 0;//ÒòΪ´°¿ÚË¢ÐÂËÙÂʵͶøÎ´ÏÔʾµÄÊýÁ¿ }; class cameraController : public QThread { @@ -59,14 +94,14 @@ public: std::unordered_mapcameras;//key Ïà»úÃû void run() { - while (1) - { - QThread::msleep(300); - for (auto camera : cameras) - { - camera.second->trigger(); - } - } + //while (1) + //{ + // //QThread::msleep(300); + // //for (auto camera : cameras) + // //{ + // // camera.second->trigger(); + // //} + //} } private: bool loadModule(QString keyName, QString moduleName, QByteArray initByte); @@ -77,6 +112,15 @@ private: QList lib_list; public slots: void R1(showImgPack*); + void cameraTrigger(QString Name) + { + auto camera=cameras.find(Name); + if (camera != cameras.end()) + { + camera->second->trigger(); + } + } }; + #endif \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/back/imgSaveThreadController.cpp b/HanddleAI/HandleAiUi-new/back/imgSaveThreadController.cpp new file mode 100644 index 00000000..dd777bda --- /dev/null +++ b/HanddleAI/HandleAiUi-new/back/imgSaveThreadController.cpp @@ -0,0 +1,12 @@ +#include +#include +#include + +imgSaveThreadController::imgSaveThreadController(backEndController* backEndControllerIn) +{ + _backEndController = backEndControllerIn; + + QString str = _backEndController->_jsonConfiguration->imgSavePath; + oriSaveThread = new imgSaveThread(oriImgSaveThread,str); + resSaveThread = new imgSaveThread(resImgSaveThread,str); +} diff --git a/HanddleAI/HandleAiUi-new/back/imgSaveThreadController.h b/HanddleAI/HandleAiUi-new/back/imgSaveThreadController.h new file mode 100644 index 00000000..ea53b606 --- /dev/null +++ b/HanddleAI/HandleAiUi-new/back/imgSaveThreadController.h @@ -0,0 +1,115 @@ +#include +#include +#include +#include +#include +#include +class backEndController; +enum imgSaveThreadType +{ + oriImgSaveThread, + resImgSaveThread +}; +class imgSaveThread :public QThread +{ +public: + struct imgSaveStruct { + std::string cameraKeyName; + std::string SNcode; + std::string customName; + std::string format;//Áô¿ÕÔò°´Ô­Í¼bmp£¬½á¹ûͼjpg + int showIndex = -1; + unsigned long long timeCode; + std::vectorimgs; + + }; + ~imgSaveThread() + { + runFlag = false; + while (this->isRunning() == true); + qDebug() << "imgSaveThread Ended"; + } + imgSaveThread(imgSaveThreadType typeIn,QString pathIn) + { + type = typeIn; + switch (type) + { + case oriImgSaveThread: + path = (pathIn).toStdString() + "//yuantu//"; + break; + case resImgSaveThread: + path = (pathIn).toStdString() + "//result//"; + break; + } + } + void run() + { + while (runFlag) + { + while (imgQueue.size()>0) + saveImg(imgQueue.dequeue()); + QThread::msleep(100); + } + } + void saveImg(imgSaveStruct& data) + { + try + { + //¸ù¾Ýʱ¼ä»ñÈ¡´ó¸Å·¾¶ + sqlTableDatas sqlRes = sql->selectSingleData("saveHour", data.SNcode);//²éÕÒ֮ǰµÄÊý¾Ý + std::string fileSavePath = path; + if (sqlRes.rowDatas.size() > 0 && sqlRes.rowDatas[0][0].value != "")//Êý¾Ý´æÔÚ + { + fileSavePath += sqlRes.tableName + "//" + sqlRes.rowDatas[0][0].value + "H//"; + } + else//Êý¾Ý²»´æÔÚ Ð½¨Êý¾Ý + { + QDateTime currentDateTime = QDateTime::currentDateTime(); + std::string ymd = currentDateTime.toString("yyyy-MM-dd").toStdString(); + int h = currentDateTime.time().hour(); + fileSavePath += ymd + "//" + std::to_string(h) + "H//"; + sql->addData(data.SNcode, { { "saveHour",std::to_string(h) } }); + } + + //ÓÐSNÂë¾Í´¢´æÔÚSNÂë·¾¶£¬ÎÞÔò´¢´æÔÚÏà»ú·¾¶ + if ((data.SNcode).length() != 0) + fileSavePath += data.SNcode + "//"; + else + fileSavePath += data.cameraKeyName + "//"; + + createDirectoryIfNotExists(fileSavePath);//Îļþ¼Ð´¦Àí + std::string fileName; + { + for (int i = 0; i < data.imgs.size(); i++) + { + fileName = data.cameraKeyName + "_" + getCurrentDateTime() + "_Count" + std::to_string(i) + ".jpg"; + cv::imwrite(fileSavePath + fileName, data.imgs[i]); + qInfo() << QString::fromStdString(data.cameraKeyName + " ori:" + fileSavePath + fileName); + } + } + } + catch (...) + { + return; + } + } + +private: + QQueue imgQueue; + + std::string path = ""; + std::string basicFormat = ""; + imgSaveThreadType type; + sqlController* sql; + bool runFlag = true; +}; +class imgSaveThreadController +{ +public: + imgSaveThreadController(backEndController* backEndControllerIn); +private: + backEndController* _backEndController; + imgSaveThread* oriSaveThread; + imgSaveThread* resSaveThread; +}; +#pragma once \ No newline at end of file diff --git a/HanddleAI/HandleAiUi-new/back/threadPoolController.cpp b/HanddleAI/HandleAiUi-new/back/threadPoolController.cpp index c2b97494..2f82beb5 100644 --- a/HanddleAI/HandleAiUi-new/back/threadPoolController.cpp +++ b/HanddleAI/HandleAiUi-new/back/threadPoolController.cpp @@ -33,37 +33,6 @@ std::string getCurrentDateTime_2() { } int threadAmount = 0; int maxThread = 16; -/// -/// »ñÈ¡µ±Ç°Ê±¼äµã£¬ÒÔ"Сʱ-·ÖÖÓ-Ãë"·µ»Ø -/// -/// -std::string getCurrentDateTime() { - // »ñÈ¡µ±Ç°Ê±¼äµã - std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); - - // ת»»Îª×Ö·û´® - std::time_t currentTime = std::chrono::system_clock::to_time_t(now); - std::tm* localTime = std::localtime(¤tTime); - std::stringstream ss; - ss << std::put_time(localTime, "%H-%M-%S"); - - return ss.str(); -} -/// -/// ¼ì²éÄ¿±êÎļþ¼ÐÊÇ·ñ´æÔÚ£¬²»´æÔÚÔò´´½¨ -/// -/// -void createDirectoryIfNotExists(const std::string& path) { - // ¼ì²é·¾¶ÊÇ·ñ´æÔÚ - if (!std::filesystem::exists(path)) { - // ´´½¨Â·¾¶ - std::filesystem::create_directories(path); - //std::cout << "ÒÑ´´½¨Îļþ¼Ð: " << path << std::endl; - } - else {/* - std::cout << "Îļþ¼ÐÒÑ´æÔÚ: " << path << std::endl;*/ - } -} ////////////THREAD//CONTROLLER//////////////////////// threadConroller::threadConroller(QObject* parent) : QThread(parent) @@ -72,10 +41,10 @@ threadConroller::threadConroller(QObject* parent) : QThread(parent) sql = new sqlController; sql->initPara(); //¸¨ÖúÏ̳߳õʼ»¯ - oriSaveThread->oriThread = true; - oriSaveThread->Init(this); + //oriSaveThread->oriThread = true; + //oriSaveThread->Init(this); - resSaveThread->Init(this); + //resSaveThread->Init(this); threadAmount = bridge.back.json.algoThreads.algoDataMap.size(); for (int i = 0; i < threadAmount; i++) { @@ -215,135 +184,6 @@ threadConroller::~threadConroller() delete thread; } } -////////////////SUBTHREAD//////////////////////// -bool folderExists(const std::string& folderPath) { - return std::filesystem::is_directory(folderPath); -} -void imgSaveThread::Init(threadConroller* tC) -{ - sql = tC->sql; - snDatas = &tC->snDatas; -} -void imgSaveThread::saveOriginalImg(imgSaveStruct& data) -{ - //¸ù¾Ýʱ¼ä»ñÈ¡´ó¸Å·¾¶ - sqlTableDatas sqlRes = sql->selectSingleData("saveHour", data.SNcode);//²éÕÒ֮ǰµÄÊý¾Ý - std::string fileSavePath = bridge.back.json.imgSavePath.toStdString(); - if (sqlRes.rowDatas.size() > 0 && sqlRes.rowDatas[0][0].value != "")//Êý¾Ý´æÔÚ - { - fileSavePath += "//yuantu//" + sqlRes.tableName + "//" + sqlRes.rowDatas[0][0].value + "H//"; - } - else//Êý¾Ý²»´æÔÚ Ð½¨Êý¾Ý - { - QDateTime currentDateTime = QDateTime::currentDateTime(); - std::string ymd = currentDateTime.toString("yyyy-MM-dd").toStdString(); - int h = currentDateTime.time().hour(); - fileSavePath += "//yuantu//" + ymd + "//" + to_string(h) + "H//"; - sql->addData(data.SNcode, { { "saveHour",to_string(h) } }); - } - - if ((data.SNcode).length() != 0) - fileSavePath += data.SNcode + "//"; - else - fileSavePath += "camera_" + data.cameraKeyName + "//"; - - createDirectoryIfNotExists_2(fileSavePath);//Îļþ¼Ð´¦Àí - std::string fileName; - //while (folderExists(resPath) != true); - //////////////// - if (data.cameraKeyName.find("3D") != -1 && data.imgs.size() == 2) - { - fileName = data.cameraKeyName + "-" + "_time" + getCurrentDateTime_2(); - cv::imwrite(fileSavePath + fileName + ".bmp", data.imgs[0]); - cv::imwrite(fileSavePath + fileName + ".tiff", data.imgs[1]); - } - else - { - std::string fileName; - data.cameraKeyName; - for (int i = 0; i < data.imgs.size(); i++) - { - fileName = data.cameraKeyName + "-" + to_string(i) + "_time" + getCurrentDateTime_2() + ".bmp"; - cv::imwrite(fileSavePath + fileName, data.imgs[i]); - qDebug() << "[Debug]" << QString::fromStdString(data.cameraKeyName + " res:" + fileSavePath + fileName); - //cout << resPath << fileName << endl; - } - } - return; -} -void imgSaveThread::saveResultImg(imgSaveStruct& data) -{ - try - { - //¸ù¾Ýʱ¼ä»ñÈ¡´ó¸Å·¾¶ - sqlTableDatas sqlRes = sql->selectSingleData("saveHour", data.SNcode);//²éÕÒ֮ǰµÄÊý¾Ý - std::string fileSavePath = bridge.back.json.imgSavePath.toStdString(); - if (sqlRes.rowDatas.size() > 0 && sqlRes.rowDatas[0][0].value != "")//Êý¾Ý´æÔÚ - { - fileSavePath += "//result//" + sqlRes.tableName + "//" + sqlRes.rowDatas[0][0].value + "H//"; - } - else//Êý¾Ý²»´æÔÚ Ð½¨Êý¾Ý - { - QDateTime currentDateTime = QDateTime::currentDateTime(); - std::string ymd = currentDateTime.toString("yyyy-MM-dd").toStdString(); - int h = currentDateTime.time().hour(); - fileSavePath += "//result//" + ymd + "//" + to_string(h) + "H//"; - sql->addData(data.SNcode, { { "saveHour",to_string(h) } }); - } - - //ÓÐSNÂë¾Í´¢´æÔÚSNÂë·¾¶£¬ÎÞÔò´¢´æÔÚÏà»ú·¾¶ - if ((data.SNcode).length() != 0) - fileSavePath += data.SNcode + "//"; - else - fileSavePath += "camera_" + data.cameraKeyName + "//"; - - createDirectoryIfNotExists_2(fileSavePath);//Îļþ¼Ð´¦Àí - std::string fileName; - //while (folderExists(resPath) != true); - - //else - { - for (int i = 0; i < data.imgs.size(); i++) - { - fileName = data.cameraKeyName + "_" + getCurrentDateTime_2() + "_time" + to_string(i) + ".jpg"; - cv::imwrite(fileSavePath + fileName, data.imgs[i]); - qDebug() << "[Debug]" << QString::fromStdString(data.cameraKeyName + " ori:" + fileSavePath + fileName); - } - } - } - catch (...) - { - return; - } -} -void imgSaveThread::run() -{ - if (oriThread == false) - while (m_runFlag == true) - { - while (resQueue.size() > 0) - { - resMutex.lock(); - imgSaveStruct data = resQueue.dequeue(); - resMutex.unlock(); - saveResultImg(data); - } - QThread::msleep(10); - } - else - while (m_runFlag == true) - { - while (oriQueue.size() > 0) - { - oriMutex.lock(); - imgSaveStruct data = oriQueue.dequeue(); - oriMutex.unlock(); - saveOriginalImg(data); - } - QThread::msleep(10); - } - -} ////////////////DET//DATA////////////////// sncodeCls::sncodeCls() { diff --git a/HanddleAI/HandleAiUi-new/back/threadPoolController.h b/HanddleAI/HandleAiUi-new/back/threadPoolController.h index 99766e93..edfbb55f 100644 --- a/HanddleAI/HandleAiUi-new/back/threadPoolController.h +++ b/HanddleAI/HandleAiUi-new/back/threadPoolController.h @@ -14,6 +14,8 @@ #include #include #include +#include +#include class threadConroller; class algoThread; class subThread; @@ -29,21 +31,7 @@ struct MatchResult { cv::Rect boundingRect; double confidence; }; -struct correctionStruct -{ - std::vector in_X_X0Y; - std::vector in_Y_X0Y; - std::vector in_Z_X0Y; - std::vector in_Z_X0Y_Value; - std::vector in_X_X0Z; - std::vector in_Y_X0Z;; - std::vector in_Z_X0Z; - std::vector in_Y_X0Z_Value; - std::vector in_X_Y0Z; - std::vector in_Y_Y0Z; - std::vector in_Z_Y0Z; - std::vector in_X_Y0Z_Value; -}; + class cameraImages { public: @@ -97,7 +85,7 @@ class detData { public: const unsigned long long timeCode = getTimeCode();//¸ù¾Ýʱ¼äºÍËæ»úÊýÉú³ÉµÄÖµ£¬Î¨Ò» - + QMutex* mutex; std::string SNcode; QString cameraKeyName; @@ -159,6 +147,7 @@ public: algoThreadName = IN_algoThreadName; oriShowIndex = IN_oriShowIndex; SNcode = IN_SN; + mutex = new QMutex(); } ~detData() { @@ -166,6 +155,7 @@ public: img.release(); for (auto img : resultImgs) img.release(); + delete mutex; //delete cameraImgPtr; } @@ -193,7 +183,7 @@ class detDataController public: std::unordered_mapmap; //std::maptstMap; - QLinkedList< detData> detDatas; + QLinkedList detDatas; QMutex dataMutex; detData* insertDetData(QString IN_cameraKeyName, QString IN_algoThreadName, std::string IN_SN, int IN_oriShowIndex) @@ -269,78 +259,6 @@ public: sncodeCls(); }; -/// -/// ¸¨ÖúÏß³Ì -/// -class imgSaveThread : public QThread -{ - Q_OBJECT -public: - bool oriThread = false; - std::string snErrorsnError2= std::string ("snErrNoSn"); - struct imgSaveStruct{ - std::string cameraKeyName; - std::string SNcode; - int showIndex = -1; - unsigned long long timeCode; - std::vectorimgs; - - }; - QMutex mutex; - bool m_runFlag = true; - std::vector>snWithHash; - - sncodeCls* snDatas; - sqlController* sql; - std::string fileNameTemp; - - QMutex oriMutex; - QQueueoriQueue; - QMutex resMutex; - QQueueresQueue; - QString dateTimeNow; - - void saveOriImg(detData* data) - { - imgSaveStruct saveStruct; - saveStruct.SNcode = data->SNcode; - //saveStruct.snCountIndex = data->snCountIndex; - saveStruct.cameraKeyName = data->cameraKeyName.toStdString(); - saveStruct.timeCode = data->timeCode; - saveStruct.showIndex = data->oriShowIndex; - for (auto mat : data->imgs) - saveStruct.imgs.push_back(mat); - oriMutex.lock(); - oriQueue.push_back(saveStruct); - oriMutex.unlock(); - this->start(); - } - void saveResImg(detData* data) - { - imgSaveStruct saveStruct; - saveStruct.SNcode = data->SNcode; - - //saveStruct.snCountIndex = data->snCountIndex; - saveStruct.cameraKeyName = data->cameraKeyName.toStdString(); - saveStruct.timeCode = data->timeCode; - saveStruct.showIndex = data->resShowIndex; - - for (auto mat : data->resultImgs) - saveStruct.imgs.push_back(mat); - - resMutex.lock(); - resQueue.push_back(saveStruct); - resMutex.unlock(); - this->start(); - } - - void Init(threadConroller* tC); - void run(); -private: - void saveOriginalImg(imgSaveStruct&); - void saveResultImg(imgSaveStruct&); -}; - /// /// Ï̳߳عÜÀí /// @@ -360,8 +278,6 @@ public: QMutex insertQueueMutex; QQueueinsertQueue; std::vectoralgoThreadList; - imgSaveThread* oriSaveThread = new imgSaveThread;//ԭͼ±£´æÏß³Ì - imgSaveThread* resSaveThread = new imgSaveThread;//½á¹ûͼ±£´æÏß³Ì void run(); void addTask(detData*); bool getFreeThread(); diff --git a/HanddleAI/HandleAiUi-new/back/toolkit.cpp b/HanddleAI/HandleAiUi-new/back/toolkit.cpp index be5ee490..d098bab5 100644 --- a/HanddleAI/HandleAiUi-new/back/toolkit.cpp +++ b/HanddleAI/HandleAiUi-new/back/toolkit.cpp @@ -92,7 +92,7 @@ bool QSetFileTimes(const QString & filepath, QDateTime& CreationTime) // int i=GetFileTime (hFile, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime); // 获å�–文件夹时间属性信æ�¯ // SYSTEMTIME stc; // FILETIME localTime; - // FileTimeToLocalFileTime(&lpCreationTime,&localTime); + // FileTimeToLocalFileTime(&lpCreatxionTime,&localTime); // FileTimeToSystemTime(&localTime,&stc);//UTC转本地时间 SYSTEMTIME newDay; newDay.wDayOfWeek=CreationTime.date().dayOfWeek(); diff --git a/HanddleAI/HandleAiUi-new/exe_main.cpp b/HanddleAI/HandleAiUi-new/exe_main.cpp deleted file mode 100644 index 07b087c3..00000000 --- a/HanddleAI/HandleAiUi-new/exe_main.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "mainwindow.h" -#include -#include -#include -#include //日志 -#include -#include -#include -#include -#include -#include -#include -#include -#include -void connectSignalAndSlots(MainWindow* front, backEndController* back) -{ - QObject::connect(back, &backEndController::sendPixmapImageWidget, front, &MainWindow::recvPixmapImageWidget); -} -int main(int argc, char* argv[]) -{ - QApplication a(argc, argv); - - //检测是å�¦å·²è¿�行 - QSystemSemaphore sema("monkey", 1, QSystemSemaphore::Open); - sema.acquire(); - QSharedMemory mem("DetUi"); - if (mem.create(1) == false) - { - sema.release(); - //程åº�直接退出 - exit(0); - - } - sema.release(); - ////////// - qRegisterMetaType("imgWidgetShowType"); - qRegisterMetaType("showImgPack"); - backEndController _backEnd; - MainWindow w; - connectSignalAndSlots(&w,&_backEnd); - w.show(); - return a.exec(); - - -} diff --git a/lib/Hd_3DCameraLMI_module_PointLazer.exp b/lib/Hd_3DCameraLMI_module_PointLazer.exp index b0d66668d858f227d6754c2baf6d937a46482b7c..c128f721899e1a2fd5f5ffe10a0335da718ee8af 100644 GIT binary patch delta 125 zcmbQh*22b_(#FK_9|$xiaym1zO!U3a_k)3f!Ipth5J)k&Sxt6e^i)w}$ZBL@@Xbsv z$}i4OD^bu0(p2#A^z&xOX0R1xNG?wSDcsDcAzy4{U}O{%<{T4}pPy44;~NZQ8k*=C XTj&`Z8yXu-{>A9Tl+`%dj_DEr(lI08 delta 119 zcmZo+o504I(#FK_9|%k)ayl~#O!U1k!otYF;LN}%$N&T`Rx!^0F0R3otr$JE)EPcE zF);XMCKu%w=ckn@Xas30_;~txGZZq|3Nj>@ry!IsXVhQ}o_v8(oZV8-*x1z2a`HPy NC#KI$lZ}`z0RZ19A_)Kh diff --git a/lib/Hd_3DCameraLMI_module_PointLazer.lib b/lib/Hd_3DCameraLMI_module_PointLazer.lib index b04150d66d0bd6f8780c0ea27f1bb8d8c729edd8..b506c2adaff32453f920896da4a99bad9470fc31 100644 GIT binary patch delta 118 zcmaDN_(X8S0VWpXY46@lKEiaIMU5e=adJO%F%yuQ#V)m3j>UkH^Ptn_hnE-_7?>uX wWRjj-#99wirapNBI|o$hWCyl5&b6m&4}62FG@E>vtp}!38LD#gEOswO00)UE^Z)<= delta 118 zcmaDN_(X8S0VbAz%oEN}KEiaIMV;Yu)8u~UVkRIpi(P879E$-XXW8l7S1&OzFfdI% w$s|3wh_xQ3OnveMb`Gf0$qsCBoC?-nr@ui}noYjT)&o1_mPrMnNFO;AS=1jL}X-jUlU%fx$O3 zxhTIlKdnSTBS=%h$J5W7A)CQgkRiD|1*C8uqlSF3k%5s>Oqg>_NPd1!ag1*;kZEY5 YXKbNoY;0(3F!?E?6H`{>WKE_^0EXKoApigX delta 138 zcmaFQ`kR$ArHzTha6({12NR3#l2yki_b}~YQDewzob1D#&IF|7*`+q0XO?DU7G=zs{FY@ZOj3RF rT2>CIg2@+IV_DC4{(bR!@_QEf$!nOTC+D&?!c;0lRc@AN*JK0$_5&nj delta 108 zcmX>ha6({12NTP2)AOe%_b}~YQD^wvG}(taoe4U!8q3=t^)#)ifQlkYM*F##1SGF<`yB)uAn delta 138 zcmaFP`k9q8rHzT$S5YvIVL1OKc_gx eHyFq?G|@A*)H60VHME?3k+3PMg|6s$^2|)lQ%QfvZyg+HBOFWRi7NqY{LX(_OnWD-pnk_ w$nsyM=EdYwEE8ZV^dYk4EOPCyj!oub+X0hM=5k2R&n?i)Oo3|WWoKpt0HB~E>;M1& delta 113 zcmbOrFhO8L2@~f(^@6+dj0_AMllj@qCU0h{Wl?AN+%!3kRef?avkeoF+0QDqc{8&x wBa6wYtap=7u}pxe(1*yDvp75wyE2)JZ3j$3nad$LKes?HGX<)hmz|jr0D+b!iU0rr diff --git a/lib/Hd_MvCamera_module_GENTL.exp b/lib/Hd_MvCamera_module_GENTL.exp index 588ebc79337b83ef3ecbb3be1c634dd15f386be3..f0a89b553a1d128975c713a0fcafda275f8da276 100644 GIT binary patch delta 126 zcmZo*`@+hZ(#FK_9|$BSaym2pVVLN5jqd{k1A{38qacuCaI>0h!RV->#*o#>z~Gyi zT$Ep&pH`xv5u~Z$^$TT$3 YGq%t(Ha0XinEZ;-i7BgbvL4eV09LOg&;S4c delta 120 zcmeyu+Q7z{(#FK_9|%+?aym0{Fi!NlCh~`Yfx()AQ4mNmxLCzF`@6UXPc~w7)KX{o z+{D1(o0(jcU!0#-qM#9^so>-3=gm;aU@ORwT%LkZKAlm6F?jL;MsapaJ!4~2L(9qc O7@e3tH%(SzxNA|mMk diff --git a/lib/Hd_MvCamera_module_GENTL.lib b/lib/Hd_MvCamera_module_GENTL.lib index 578b535ee41c6c12f7e6ab81feeae0134eac1aaf..4010f0a3da11c6819056f7133313cf8a23370e79 100644 GIT binary patch delta 118 zcmew&@I_$53?`O;Zc(o%&tclnqQ;QbI60mc1_l!bMnNFO;AS=1g3&=mjUlU%fx$O3 zxhTIlKdnSTBS=%h$J5W7A)CQgkRiD|1*C8hqlSF3k%5s>Oqg>_NPd1!ag1*;kZEY5 YXKbNoY;0(3F!?2;6H`{>WL>690FnbGMF0Q* delta 120 zcmey&`k$3ErHzTW$$WANntjN OGCDDRZknvfbO`{Dsv}(h diff --git a/lib/Hd_MvCamera_module_GIGE.lib b/lib/Hd_MvCamera_module_GIGE.lib index f5ba12df64b2f2e149f3a1b7a1622e6c2dd11692..110ae8d714ae9a153c870b6ea7d31787466ae1f1 100644 GIT binary patch delta 108 zcmaDN@I+w4Bqo;p>l@!pp2oC~MU5e=aq=uy^~v?jPE0`NX;!JtcbVlGS)TPV-XJB3aIQ)aT5(x04xJn+a delta 108 zcmaDN@I+w4BqkQ4S+m|wp2oC~MV;Yu)8tvK>XYl4otS{k)2vdP?=s6XvY5Ryxjl(> s8ccycM6#SUOQrAa+sTZq@{`lp=D}o@xg3)7a|`q`Q=mrpvx_nU04H}TWB>pF diff --git a/lib/Hd_ResultsSummary_module.exp b/lib/Hd_ResultsSummary_module.exp index 59f77271cb443ce895a01c84da2ef9a0df05ac4b..72272a70ead1c7a3023873a763f290b25f1c8a31 100644 GIT binary patch delta 126 zcmZo*`@+hZ(#FK_9|$BSaym2pVVLN5jqd{k1A{38qacuCaI>0h!RV->#*o#>z~Gyi zT$Ep&pH`xv5u~Z$^$TT$3 YGq%t(Ha0XinEZ;-i7BgbvL4eV09LOg&;S4c delta 120 zcmeyu+Q7z{(#FK_9|%+?aym0{Fi!NlCh~`Yfx()AQ4mNmxLCzF`@6UXPc~w7)KX{o z+{D1(o0(jcU!0#-qM#9^so>-3=gm;aU@ORwT%LkZKAlm6F?jL;MsapaJ!4~2L(9qc O7@e3tH%(SzxNA|mMk diff --git a/lib/Hd_ResultsSummary_module.lib b/lib/Hd_ResultsSummary_module.lib index ff33633f3db52aec9c9ccb88fc9c624c2109a9d1..8baafc1c7adb77e35051dfe8ea37dc3b629b4297 100644 GIT binary patch delta 117 zcmew&@I_$53?^o+dy^*5W;(#4#*o!GIi5M2DXVew8D=X+&JQ+8e@-zlFfdJC$Rs^k xi?tl4M1ArZRt})D$!D0QCVya!<9s*6;o>`}O0&tmY%MUA$_SOxn`7C<83B{oC#(Pf delta 117 zcmew&@I_$53?}BnwZ|vVW;(#4&hWWuay)Z3)90qmXPB)RIsaXl@bDA^0|V3Kg-p_u ywOGqxO4KKxVdVfSn|y{@YVrrxI8L`KOHaRpsx+J2%hm!@sfQM!u=t^)#)ifQlm9b4W6EmW J{G6GI2>@mTAnyPG delta 139 zcmcc1{gRtArHzTrV$mz_ucBAiWMv;Y#3=B35jDie6;9?cy?C;_lJlT!ONlTsK za}xuDZ)S2)esO+UiGoIurh<>BpEpAxgRLM#a(N0u`5Gn-`CuahBcqrw=a`WE{G8$# g-(Voq&_vJJQqS1f)X;MBXQpRNpPM${W@cgn00B5E`v3p{ diff --git a/lib/Hd_SocketModule_ModbusTcp.lib b/lib/Hd_SocketModule_ModbusTcp.lib index 7d987e797c1925944487933e8b6ed09e14a3773c..b3ff8f19c2b7f22a232105edac9723e1a30fca2a 100644 GIT binary patch delta 108 zcmew+^-XHSI~LA!vnzkN7c@4(_u=wNxPHmXh?VS6W0bcJXg#Z8m diff --git a/lib/Hd_VirtualCamera_ReadFile.exp b/lib/Hd_VirtualCamera_ReadFile.exp index 2ab8a32736ff7ac0009d959e546fcdcc96397f2c..97564e7ecf1b9a7dcd8759b5f7e475424bd0e889 100644 GIT binary patch delta 92 zcmZo>`_9Ul(#FK_9|)u;aym2pWtix9gYP2)1A`d@qacuCaI>0h#puMM#*o!Gxq(rX rJDb5)kRiD|1thVIQG>B~@_9yab_+dYV?$$u$!{5*n1BimnJxhU8TcBz delta 138 zcmey)+RVn8(#FK_9|+VZaym0{GEVfnA@Y}jfx(7>Q4mNmxLCzF`@6UXPc~t6(o$#m z+{D1(o0(jcU!0#-qM#9^so>-3=gm;aU@ORwT%LkZK8sO9KG?{>$S5YvIVL1OKc_gx eHyFq?G|@A*)H60VHME@kkkN_hbJJv1rb_?-o+yq0 diff --git a/lib/Hd_VirtualCamera_ReadFile.lib b/lib/Hd_VirtualCamera_ReadFile.lib index 758ab845a978ef76e6d8ef9c8d39482abf9ed17e..6ea40c154c26659195866f0264978b6461a5520a 100644 GIT binary patch delta 101 zcmZn=Y!KWqhl%AB7y(_ delta 101 zcmZn=Y!KWqhl%A?*qqO#P+?>iT%?JPj5GH*9