From 70ce6af45b9be067cfe86d0cd363c31b0894b8d3 Mon Sep 17 00:00:00 2001 From: rci <15089880081@gmail.com> Date: Fri, 11 Oct 2024 10:07:08 +0800 Subject: [PATCH] update --- .../Hd_AI_2D3Ddata_module/CMakeLists.txt | 70 ++ .../Hd_AI_2D3Ddata_module.cpp | 921 +++++++++++++++ .../Hd_AI_2D3Ddata_module.h | 119 ++ BaseModules/Hd_AI_2D3Ddata_module/base.h | 69 ++ BaseModules/Hd_AI_empty_module/CMakeLists.txt | 70 ++ .../Hd_AI_empty_module/Hd_AI_empty_module.cpp | 985 ++++++++++++++++ .../Hd_AI_empty_module/Hd_AI_empty_module.h | 119 ++ BaseModules/Hd_AI_empty_module/base.h | 69 ++ BaseModules/Hd_AI_seg_module/CMakeLists.txt | 70 ++ .../Hd_AI_seg_module/Hd_AI_seg_module.cpp | 918 +++++++++++++++ .../Hd_AI_seg_module/Hd_AI_seg_module.h | 119 ++ BaseModules/Hd_AI_seg_module/base.h | 69 ++ .../Hd_AI_tmp_module_savImg/CMakeLists.txt | 70 ++ .../Hd_AI_tmp_module_savImg.cpp | 1010 +++++++++++++++++ .../Hd_AI_tmp_module_savImg.h | 119 ++ BaseModules/Hd_AI_tmp_module_savImg/base.h | 69 ++ .../Logic_camera_thread.cpp | 27 +- .../Hd_LogicDll_module/Logic_camera_thread.h | 11 +- .../Hd_LogicDll_module/Logic_hdataprocess.cpp | 8 +- .../Hd_LogicDll_module/Logic_hdataprocess.h | 4 +- .../Hd_LogicDll_module/Logic_myiothread.cpp | 375 +++--- .../Hd_LogicDll_module/Logic_myiothread.h | 1 + configBackup/HanddleAI.exe | Bin 0 -> 1677312 bytes doc/三协地址表/一次注液地址表.xlsx | Bin 11242 -> 10978 bytes doc/三协地址表/软连接3-2地址表.xlsx | Bin 11517 -> 11604 bytes 25 files changed, 5081 insertions(+), 211 deletions(-) create mode 100644 BaseModules/Hd_AI_2D3Ddata_module/CMakeLists.txt create mode 100644 BaseModules/Hd_AI_2D3Ddata_module/Hd_AI_2D3Ddata_module.cpp create mode 100644 BaseModules/Hd_AI_2D3Ddata_module/Hd_AI_2D3Ddata_module.h create mode 100644 BaseModules/Hd_AI_2D3Ddata_module/base.h create mode 100644 BaseModules/Hd_AI_empty_module/CMakeLists.txt create mode 100644 BaseModules/Hd_AI_empty_module/Hd_AI_empty_module.cpp create mode 100644 BaseModules/Hd_AI_empty_module/Hd_AI_empty_module.h create mode 100644 BaseModules/Hd_AI_empty_module/base.h create mode 100644 BaseModules/Hd_AI_seg_module/CMakeLists.txt create mode 100644 BaseModules/Hd_AI_seg_module/Hd_AI_seg_module.cpp create mode 100644 BaseModules/Hd_AI_seg_module/Hd_AI_seg_module.h create mode 100644 BaseModules/Hd_AI_seg_module/base.h create mode 100644 BaseModules/Hd_AI_tmp_module_savImg/CMakeLists.txt create mode 100644 BaseModules/Hd_AI_tmp_module_savImg/Hd_AI_tmp_module_savImg.cpp create mode 100644 BaseModules/Hd_AI_tmp_module_savImg/Hd_AI_tmp_module_savImg.h create mode 100644 BaseModules/Hd_AI_tmp_module_savImg/base.h create mode 100644 configBackup/HanddleAI.exe diff --git a/BaseModules/Hd_AI_2D3Ddata_module/CMakeLists.txt b/BaseModules/Hd_AI_2D3Ddata_module/CMakeLists.txt new file mode 100644 index 0000000..9dafdb5 --- /dev/null +++ b/BaseModules/Hd_AI_2D3Ddata_module/CMakeLists.txt @@ -0,0 +1,70 @@ +# 获取获取当前目录名 +get_filename_component(CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} NAME) +string(TIMESTAMP RUN_TIME) +message( " model start : " ${CURRENT_FOLDER}:${RUN_TIME}) + +set(DLL_NAMES "opencv" "handdleAI3.0") +foreach(child ${DLL_NAMES}) + LIST(APPEND ENV_INCLUDE ${${child}_include}) + LIST(APPEND ENV_LIB ${${child}_lib}) + LIST(APPEND ENV_TARGET ${${child}_target_link}) +endforeach() +message(" ENV_INCLUDE : " ${ENV_INCLUDE} ) +message(" ENV_LIB : " ${ENV_LIB} ) +message(" ENV_TARGET : " ${ENV_TARGET} ) +include_directories( + + ${ENV_INCLUDE} + ) + +link_directories ( + ${ENV_LIB} + + ) + + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +SET(CMAKE_CXX_STANDARD 11) +SET(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_AUTOMOC ON) +SET(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) + +FILE(GLOB HEAD_FILES "./*.h" ) +FILE(GLOB SRC_FILES "./*.cpp") +FILE(GLOB UI_FILES "./*.ui") + + +#find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) + +add_library(${CURRENT_FOLDER} SHARED + ${HEAD_FILES} + ${SRC_FILES} + ${UI_FILES} + ) + + + +set_target_properties(${CURRENT_FOLDER} PROPERTIES LINKER_LANGUAGE C + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} + ) + + +target_link_libraries(${CURRENT_FOLDER} PRIVATE + ${ENV_TARGET} + Qt${QT_VERSION_MAJOR}::Core + ) + + +# target_compile_definitions(${CURRENT_FOLDER} PRIVATE HD_AIDEMO_MODULE_LIBRARY) + + + + +string(TIMESTAMP RUN_TIME) +message( " model end : " ${CURRENT_FOLDER}:${RUN_TIME}) diff --git a/BaseModules/Hd_AI_2D3Ddata_module/Hd_AI_2D3Ddata_module.cpp b/BaseModules/Hd_AI_2D3Ddata_module/Hd_AI_2D3Ddata_module.cpp new file mode 100644 index 0000000..6035cca --- /dev/null +++ b/BaseModules/Hd_AI_2D3Ddata_module/Hd_AI_2D3Ddata_module.cpp @@ -0,0 +1,921 @@ +#include "Hd_AI_2D3Ddata_module.h" +#include + +#include +#include + + +#pragma execution_character_set("utf-8") +using namespace cv; +using namespace std; + +//原图保存文件夹 +static QString oriImgSaveDir = "F:/ORI/"; +//原图class图保存文件夹 +static QString classImgSaveDir = "F:/ORIclass/"; +//结果保存文件夹 +static QString resImgSaveDir = "F:/res/"; + +//切图的class的width,根据项目实际设置! +static int sizeW = 150; +//切图的class的height,根据项目实际设置! +static int sizeH = 150; +//切图的class的width,根据项目实际设置!0为黑,255为白; +static int fillColour = 0; + + +//检测线程锁 +static QMutex* detect_mutex; +//保存线程锁 +static QMutex* saveStruct_mutex; +//检测线程运行标志 +static bool ifdetectThread = false; + + +// 缺陷信息结构体 +typedef struct { + QString defectName = "";//缺陷名称 + cv::Rect defectRect = { 0,0,0,0 };//缺陷位置 + cv::Scalar defectScalar = cv::Scalar(0, 0, 0);//画框颜色 + double defectArea = 0;//缺陷真实面积 + double defectDepth = 0;//缺陷深度/高度,3D信息 +}defectInfo; + + + +//判断文件是否存在,不存在则创建 +bool isFileExist(QString fullFileName) +{ + QFileInfo fileInfo(fullFileName); + if (fileInfo.isFile()) + { + return true; + } + return false; +} + +void GetStringSize(HDC hdc, const char* str, int* w, int* h) +{ + SIZE size; + GetTextExtentPoint32A(hdc, str, strlen(str), &size); + if (w != 0) *w = size.cx; + if (h != 0) *h = size.cy; +} +//在图像写中文,英文也可以写 +void putTextZH(cv::Mat& dst, const char* str, cv::Point org, cv::Scalar color, int fontsize, + const char* fn = "Arial", bool italic = false, bool underline = false) +{ + CV_Assert(dst.data != 0 && (dst.channels() == 1 || dst.channels() == 3)); + + + int x, y, r, b; + //坐标点大于图像宽和高直接返回 + if (org.x > dst.cols || org.y > dst.rows) return; + x = org.x < 0 ? -org.x : 0; + y = org.y < 0 ? -org.y : 0; + + + LOGFONTA lf; + lf.lfHeight = -fontsize; //字体高度 + lf.lfWidth = 0; //平均宽度 + lf.lfEscapement = 0; //字符排列角度 + lf.lfOrientation = 0; //字符本身旋转的角度 + lf.lfWeight = 5; //设置字体线条的宽度 + lf.lfItalic = italic; //斜体 + lf.lfUnderline = underline; //下划线 + lf.lfStrikeOut = 0; //是否字符中央加横线 + lf.lfCharSet = DEFAULT_CHARSET; //字符集 + lf.lfOutPrecision = 0; //字体的精确度 + lf.lfQuality = PROOF_QUALITY; //字体质量 + lf.lfPitchAndFamily = 0; //选择字体的间距和字体家族 + strcpy_s(lf.lfFaceName, fn); //字体的名称 + + + HFONT hf = CreateFontIndirectA(&lf); + HDC hdc = CreateCompatibleDC(0); + HFONT holdfont = (HFONT)SelectObject(hdc, hf); + + + int strBaseW = 0, strBaseH = 0; + int singleRow = 0; + char buf[1 << 12]; + strcpy_s(buf, str); + char* bufT[1 << 12]; //这个用于分隔字符串后剩余的字符,可能会超出。 + + + //处理多行 + { + int nnh = 0; + int cw, ch; + + + const char* ln = strtok_s(buf, "\n", bufT); + while (ln != 0) + { + GetStringSize(hdc, ln, &cw, &ch); + strBaseW = max(strBaseW, cw); + strBaseH = max(strBaseH, ch); + + + ln = strtok_s(0, "\n", bufT); + nnh++; + } + singleRow = strBaseH; + strBaseH *= nnh; + } + + + if (org.x + strBaseW < 0 || org.y + strBaseH < 0) + { + SelectObject(hdc, holdfont); + DeleteObject(hf); + DeleteObject(hdc); + return; + } + + + r = org.x + strBaseW > dst.cols ? dst.cols - org.x - 1 : strBaseW - 1; + b = org.y + strBaseH > dst.rows ? dst.rows - org.y - 1 : strBaseH - 1; + org.x = org.x < 0 ? 0 : org.x; + org.y = org.y < 0 ? 0 : org.y; + + + BITMAPINFO bmp = { 0 }; + BITMAPINFOHEADER& bih = bmp.bmiHeader; + int strDrawLineStep = strBaseW * 3 % 4 == 0 ? strBaseW * 3 : (strBaseW * 3 + 4 - ((strBaseW * 3) % 4)); + + + bih.biSize = sizeof(BITMAPINFOHEADER); + bih.biWidth = strBaseW; + bih.biHeight = strBaseH; + bih.biPlanes = 1; + bih.biBitCount = 24; + bih.biCompression = BI_RGB; + bih.biSizeImage = strBaseH * strDrawLineStep; + bih.biClrUsed = 0; + bih.biClrImportant = 0; + + + void* pDibData = 0; + HBITMAP hBmp = CreateDIBSection(hdc, &bmp, DIB_RGB_COLORS, &pDibData, 0, 0); + + + CV_Assert(pDibData != 0); + HBITMAP hOldBmp = (HBITMAP)SelectObject(hdc, hBmp); + + + //color.val[2], color.val[1], color.val[0] + SetTextColor(hdc, RGB(255, 255, 255)); + SetBkColor(hdc, 0); + //SetStretchBltMode(hDC, COLORONCOLOR); + + + strcpy_s(buf, str); + const char* ln = strtok_s(buf, "\n", bufT); + int outTextY = 0; + while (ln != 0) + { + TextOutA(hdc, 0, outTextY, ln, strlen(ln)); + outTextY += singleRow; + ln = strtok_s(0, "\n", bufT); + } + uchar* dstData = (uchar*)dst.data; + int dstStep = dst.step / sizeof(dstData[0]); + unsigned char* pImg = (unsigned char*)dst.data + org.x * dst.channels() + org.y * dstStep; + unsigned char* pStr = (unsigned char*)pDibData + x * 3; + for (int tty = y; tty <= b; ++tty) + { + unsigned char* subImg = pImg + (tty - y) * dstStep; + unsigned char* subStr = pStr + (strBaseH - tty - 1) * strDrawLineStep; + for (int ttx = x; ttx <= r; ++ttx) + { + for (int n = 0; n < dst.channels(); ++n) { + double vtxt = subStr[n] / 255.0; + int cvv = vtxt * color.val[n] + (1 - vtxt) * subImg[n]; + subImg[n] = cvv > 255 ? 255 : (cvv < 0 ? 0 : cvv); + } + + + subStr += 3; + subImg += dst.channels(); + } + } + + + SelectObject(hdc, hOldBmp); + SelectObject(hdc, holdfont); + DeleteObject(hf); + DeleteObject(hBmp); + DeleteDC(hdc); +} + +void drawDefects(cv::Mat& sourceMat, QQueue defectInfoList) +{ + for (int i = 0; i < defectInfoList.size(); i++) + { + defectInfo mdefect = defectInfoList[i]; + + cv::rectangle(sourceMat, cv::Point(mdefect.defectRect.x, mdefect.defectRect.y), + cv::Point(mdefect.defectRect.x + mdefect.defectRect.width, mdefect.defectRect.y + mdefect.defectRect.height), mdefect.defectScalar, 3, 8); + + QByteArray path_arr = mdefect.defectName.toLocal8Bit(); + const char* path = path_arr.data(); + putTextZH(sourceMat, path, cv::Point(mdefect.defectRect.x, mdefect.defectRect.y - 50), mdefect.defectScalar, 50, "微软雅黑"); + } +} + + + +//判断文件夹是否存在,不存在则创建 +void Hd_AI_2D3Ddata_module::isDirExist(QString fullDirName) +{ + QDir* photo = new QDir; + bool exist = photo->exists(fullDirName); + if (exist) + { + //qDebug() << fullDirName << "::已存在"; + } + else + { + //创建photo文件夹 + //qDebug() << fullDirName << "::不存在,创建"; + photo->mkdir(fullDirName); + } + delete photo; + photo = nullptr; +} + +Hd_AI_2D3Ddata_module* create() +{ + qDebug() << "[INFO] " << " Hd_AI_2D3Ddata_module create success!" ; + return new Hd_AI_2D3Ddata_module; +} + +void destory(Hd_AI_2D3Ddata_module* ptr) +{ + qDebug() << "[INFO] " << "Hd_AI_2D3Ddata_module destory success!"; + if(ptr) + { + delete ptr; + ptr = nullptr; + } +} + +Hd_AI_2D3Ddata_module::Hd_AI_2D3Ddata_module() +{ + detect_mutex = new QMutex; + saveStruct_mutex = new QMutex; + ifdetectThread = false; +} + +Hd_AI_2D3Ddata_module::~Hd_AI_2D3Ddata_module() +{ + ifdetectThread = false; + Sleep(10); + if (detect_mutex) + { + delete detect_mutex; + detect_mutex = nullptr; + } + if (saveStruct_mutex) + { + delete saveStruct_mutex; + saveStruct_mutex = nullptr; + } + /*DestroySegObj(pSeg); + DestroyClsObj(pCls);*/ +} + +QByteArray m_writeData; +static int defectNums = 0; +//static cv::Mat resMat; +//从类中读数据到实例对象 +bool Hd_AI_2D3Ddata_module::readData(std::vector&vec_mat,QByteArray &data) +{ + detect_mutex->lock(); + //qDebug() << __FUNCTION__ << " line:" <<__LINE__ << " data len:" << data.length(); + if (resMat.size()>0) + { + vec_mat.push_back(resMat[0]); + resMat.clear(); + } + else + { + if(HikMat.size()) + vec_mat.push_back(HikMat[0]); + //qDebug() << __FUNCTION__ << " line:" << __LINE__ << " resMat.data err:"; + } + //if (allNum++ % 21 == 20) + // data = "2";// resByte.dequeue(); + //else + //if (allNum++ % 2 == 0) + // data = "0*2*3*2";// resByte.dequeue(); + //else + data = "1";// "0*1*2*3";//1OK,2NG + resByte.clear(); + ////之后根据结果类修改 + //if(resIfNg == true) + // data = "NG"; + //else data = "OK"; + detect_mutex->unlock(); + return true; +} +//从类中读数据到实例对象 +bool Hd_AI_2D3Ddata_module::encodeResultValue(QVector append_value,QByteArray &resultByte) +{ + try + { + std::string sendMsg; + for(int i = 0 ; i < append_value.size();i++) + { + std::string value = append_value.at(1); + //type + int type = 3; + std::string m_type; + m_type.insert(0,4,'1'); + memcpy ( (void*)m_type.c_str(),(void*)&type,4 ); + sendMsg.append(m_type); + + //len + int len = value.length(); + std::string m_len; + m_len.insert(0,4,'1'); + memcpy ( (void*)m_len.c_str(),(void*)&len,4 ); + sendMsg.append(m_len); + + //data x + sendMsg.append(value); + } + resultByte = QByteArray::fromStdString(sendMsg); + } catch (QString ev) + { + qCritical() << "[Error] " << " ev:" << ev; + return false; + } + return true; +} +//接收数据 +bool Hd_AI_2D3Ddata_module::writeData(std::vector& vec_mat, QByteArray &data) +{ + m_writeData = data; + //qDebug() << __FUNCTION__ << "line:"<< __LINE__ << " data len" << data.length() ; + if(vec_mat.empty()) + { + qCritical() << "[Error] " << " vec_mat is null !"; + return false; + } + detect_mutex->lock(); + HikMat.clear(); + HikMat.enqueue(vec_mat[0]); + //测试相机的, + //while (HikMat[0].cols > 2000)cv::resize(HikMat[0], HikMat[0], cv::Size(), 0.1, 0.1); + //or检测:保存路径,拍照面描述,相机key_第几张图,SN_时间戳 + //and检测:保存路径,拍照面描述,相机key_第几张图,相机key_第几张图,SN_时间戳,SN_时间戳 + //汇总:保存路径,拍照面描述,触发信号_序号列表0,SN_时间戳 + QString qstring_data = data; + QStringList datalist = qstring_data.split(','); + + /*saveKey.enqueue("datalist[0]"); + Dir2D.enqueue("datalist[1]"); + QStringList SN_dataTime; + SN_dataTime = datalist[3].split('_'); + DateTime1 = "SN_dataTime[1]"; + SN.enqueue("SN_dataTime[0]");*/ + //qCritical() << __FUNCTION__ << " line: " << __LINE__ << " data:" << qstring_data; + detect_mutex->unlock(); + + //cv::Mat resultDstImg = vec_mat[0].clone();// = pSeg->Evaluate(sourceImg); //返回单通道二值图 图片错误输出Image Error!但不报错。。 + //resultDstImg = pSeg->Evaluate(resultDstImg); + //resultDstImg.release(); + + return true; +} +//初始化 +bool Hd_AI_2D3Ddata_module::initParas(QByteArray& byte) +{ + //if(byte.isEmpty()) + //{ + // qCritical() << "[Error] " << " byte is null!"; + // return false; + //} + //QVector vec_ret; + + //decodeAiValue(byte,vec_ret); + //if(vec_ret.isEmpty()) + //{ + // qCritical() << "[Error] " << " vec_ret is null!"; + // return false; + //} + + ///*pSeg = CreateSegObjS(pSeg_modulePath, 128, gpuId); + //pCls = CreateClsObjV3(pCls_modulePath, gpuId, 1);*/ + + + //StationNo = vec_ret.at(0).toInt(); + + ////InitThreads(StationNo, img2D); + ////InitModels(StationNo, img2D); + + ////运行检测线程 + //ifdetectThread = true; + + ////线程检测:结果类完成时,使用 + ////ifThreadRunDetect = true; + ////QFuture future1 = QtConcurrent::run(this, &Hd_AI_2D3Ddata_module::detectThread); + ////运行存图线程 + //QFuture future2 = QtConcurrent::run(this, &Hd_AI_2D3Ddata_module::saveImgThread); + ////detectThread(); + + ////原图总文件夹 + //isDirExist(oriImgSaveDir); + ////原图class总文件夹 + //isDirExist(classImgSaveDir); + ////结果图总文件夹 + //isDirExist(resImgSaveDir); + + + wstring taskPath = L"task\\haiwai_demo_model1\\haiwai_demo_model1.task"; + wcout.imbue(locale("zh_CN")); + + //bool ret = instance(taskPath, 0); + //if (!ret) + //{ + // //销毁实例 + // destroyInstance(); + // cout << "run task false\n"; + // return false; + //} + //vector srcMats; + //vector results; + ////传入图片vector 和 接收结果的容器 + //ret = PBTASK_EXPORT::run(srcMats, results);//初始化一下AI模型 + + //qDebug() << "[INFO] " << " StationNo:" << StationNo << " img2D:" << img2D ; + return true; +} +// 解码 +bool Hd_AI_2D3Ddata_module::decodeAiValue(QByteArray byte,QVector &vec_ret) +{ + if(byte.isEmpty()) + { + qCritical() << "[Error] " << " byte is null!"; + return false; + } + + /*******************************************/ + byte.remove(0,8); + QByteArray mm_data = byte.mid(0,4); + memcpy((void*)¶mNum,(void*)mm_data.data(), 4); + qDebug() << "[INFO] " << " paramNum:" << paramNum; + byte.remove(0,4); + /*******************************************/ + + while (!byte.isEmpty()) + { + int type = 0; + QByteArray m_type = byte.mid(0,4); + memcpy((void*)&type,(void*)m_type.data(), 4); + byte.remove(0,4); + + int len = 0; + QByteArray m_len = byte.mid(0,4); + memcpy((void*)&len,(void*)m_len.data(), 4); + byte.remove(0,4); + + QByteArray mm_data = byte.mid(0,len); + vec_ret.append(mm_data); + byte.remove(0,len); + } + return true; +} + +//---------检测流程,根据实际项目修改--------- +bool Hd_AI_2D3Ddata_module::AIdetect(cv::Mat img2D, QString mysaveKey, QString myDir2D, QString mySN, QString myDataTime) +{ + try + { + //存图数据加保存队列,加锁,避免数据访问冲突 + saveStruct_mutex->lock(); + saveImgStruct mySave; + Mat sourceImg; + sourceImg = img2D.clone(); + //img2D.copyTo(sourceImg); + //img2D.release(); + QString mysaveKey1 = mysaveKey; //"offlineStation1_off_1" + saveStruct_mutex->unlock(); + + QJsonDocument document; + QJsonObject obj; + obj.insert("result_key", "mysaveKey"); + obj.insert("SN", "mySN"); + obj.insert("DataTime", "myDataTime"); + + + //QFile csvName("test.csv"); + //QStringList lines; + //lines << "class,name\n" << "3,4,5,6,7\n" << "a,b,c,d\n"; + //if (csvName.open(QIODevice::WriteOnly)) //若文件不存在,会自动创建 + //{ + // for (int i = 0; i < lines.size(); i++) + // csvName.write(lines[i].toStdString().c_str()); + // csvName.close(); + //} + + QQueue defectInfoList; + + //seg后class检测逻辑 + /*if (0) { + Mat sourceRectangles;// 在原图缺陷位置,边界矩形框出 + sourceRectangles = sourceImg.clone(); + //sourceImg.copyTo(sourceRectangles); + vector> contours; + + //seg检测 + Mat resultDstImg;// = sourceImg.clone();// = pSeg->Evaluate(sourceImg); //返回单通道二值图 图片错误输出Image Error!但不报错。。 + resultDstImg = pSeg->Evaluate(sourceImg); + //int resultClass = pCls->Evaluate(sourceImg); //类别id + + //opencv对二值图进行处理 + //GaussianBlur(resultDstImg, resultDstImg, Size(3, 3), 1); //缺陷过滤值较大时,可以减少检出数;缺陷较小时,漏检较多 + threshold(resultDstImg, resultDstImg, pSeg->m_classes, 255, THRESH_BINARY_INV);//大于部分设为0,小于部分设为255 + //findContours(resultDstImg, contours, cv::noArray(), cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE); //不识别内部轮廓,有些情况抓到的图像外框? + findContours(resultDstImg, contours, cv::noArray(), cv::RETR_TREE, cv::CHAIN_APPROX_NONE); //需要内部轮廓的写法 + + if (contours.size() == 0) + { + //printf("Notlabeled\n"); + } + else + { + for (int j = 0; j < contours.size(); j++) + { + Rect rect1 = boundingRect(Mat(contours[j])); + + //最小缺陷过滤参数,根据项目实际设置! + int filterNum = 10; + float w = rect1.width * 1.0; + float h = rect1.height * 1.0; + if ((w / sourceImg.cols > 0.98) || (h / sourceImg.rows > 0.98)) + { + //抓到图像外框了 + //qDebug() << "NG is too big..."; + continue; + } + //且逻辑,有的项目需要或逻辑!! + if ((w > filterNum && h > filterNum))//||rect1.area> filterNum*filterNum*1.5) + { + //class检测mat + Mat imgCls; + + //此段为切图逻辑为: + //缺陷外扩5像素; + //判断最大边,大于class建网大小的,按照最大边尺寸比例切大图,然后resize为建网大小;最大边小于等于建网大小的,按照建网大小切图; + //越界填充 + { + int startX = rect1.x - 5; + int startY = rect1.y - 5; + int endX = rect1.x + rect1.width + 5; + int endY = rect1.y + rect1.height + 5; + + //尺寸比例 + double maxscaler, scalerX, scalerY; + maxscaler = 1.0; + scalerX = (endX - startX) * 1.0 / sizeW;//*1.0转为float,避免被取整了 + scalerY = (endY - startY) * 1.0 / sizeH; + + maxscaler = max(maxscaler, max(scalerX, scalerY)); + + int avgX = (rect1.x + rect1.x + rect1.width) / 2; //中点X位置 + int avgY = (rect1.y + rect1.y + rect1.height) / 2;//中点Y位置 + + startX = avgX - int(maxscaler * sizeW / 2);//强转为int + endX = startX + int(maxscaler * sizeW); + startY = avgY - int(maxscaler * sizeH / 2); + endY = startY + int(maxscaler * sizeH); + + //判断是否越界,越界要填充的像素个数 + int copyTop = max(0, 0 - startY); + int copyButton = max(0, endY - sourceImg.rows); + int copyLeft = max(0, 0 - startX); + int copyRight = max(0, endX - sourceImg.cols); + + //切图不要越界,会崩溃 + Mat imgCut = sourceImg(Range(max(0, startY - copyTop), min(sourceImg.rows, endY - copyButton)), + Range(max(0, startX - copyLeft), min(sourceImg.cols, endX - copyRight))); //起始行,终止行;起始列,终止列 + + //图像扩充 + if (sourceImg.channels() == 1) + { + copyMakeBorder(imgCut, imgCut, copyTop, copyButton, copyLeft, copyRight, BORDER_CONSTANT, fillColour); + } + else + { + copyMakeBorder(imgCut, imgCut, copyTop, copyButton, copyLeft, copyRight, BORDER_CONSTANT, Scalar(fillColour, fillColour, fillColour)); + } + //resize为建网大小 + cv::resize(imgCut, imgCls, cv::Size(sizeW, sizeH)); + imgCut.release(); + } + + + int resultClass = 0; + float prob = 1.0; + + resultClass = pCls->Evaluate(imgCls); //类别id + prob = pCls->getProbability(); //可能性 + + //切图保存,按需 + { + isDirExist(classImgSaveDir + mysaveKey1 + "/class_" + QString::number(resultClass)); + //存图数据入队,按需 + addImgToSaveStruct(imgCls, mysaveKey1, classImgSaveDir + mysaveKey1 + "/class_" + QString::number(resultClass) + "/" + mySN + myDataTime + QString::number(j) + ".bmp"); + } + + //此处应添加缺陷计数逻辑 + + if (resultClass == 0)//OK + { + ; + } + else if (resultClass == 1)//划伤Scratch + { + resIfNg = true; + //rectangle(sourceRectangles, rect1.tl(), rect1.br(), Scalar(0, 0, 255), 3, 8); + ////可行,必须转一下格式 + //{ + // QString pathQstr = "划伤"; + // QByteArray path_arr = pathQstr.toLocal8Bit(); + // const char* path = path_arr.data(); + // putTextZH(sourceRectangles, path, cv::Point(rect1.tl().x, rect1.tl().y - 5), Scalar(255, 0, 0), 50, "微软雅黑"); + //} + + defectInfo mdefectInfo; + mdefectInfo.defectName = "划伤"; + mdefectInfo.defectRect = rect1; + mdefectInfo.defectArea = contourArea(contours[j]); + mdefectInfo.defectScalar = cv::Scalar(0, 0, 255); + defectInfoList.enqueue(mdefectInfo); + } + else if (resultClass == 2)//碰伤 + { + resIfNg = true; + defectInfo mdefectInfo; + mdefectInfo.defectName = "碰伤"; + mdefectInfo.defectRect = rect1; + mdefectInfo.defectArea = contourArea(contours[j]); + mdefectInfo.defectScalar = cv::Scalar(0, 255, 255); + defectInfoList.enqueue(mdefectInfo); + } + imgCls.release(); + } + else { + //cout << "ng is too small<" << filterNum << endl; + continue; + } + } + } + //cv::Mat resMat = img2D.clone(); + sourceRectangles.release(); + contours.resize(0); + resultDstImg.release(); + } + */ + + detect_mutex->lock(); + //resMat = sourceImg.clone(); + //sourceImg.copyTo(resMat); + resMat.push_back(sourceImg); + //结果图画框和缺陷,在resMat上绘制 + if (resMat.size() > 0) + drawDefects(resMat[0], defectInfoList); + + //QByteArray,根据实际项目进行解析 + //参数,例:返回结果图;相机关键字(SN或userID)+保存路径+缺陷信息列表(缺陷名称,缺陷位置int(x,y,w,h),画框颜色Scalar(a,b,c),缺陷面积double) + + QJsonArray detaillists; + //QByteArrayList resQbyte; + for (int i = 0; i < defectInfoList.size(); i++) + { + defectInfo mdefect = defectInfoList[i]; + //resQbyte.push_back(mdefect.defectName.toLocal8Bit()); //中文也可以QString::number(1.1).toUtf8() + //resQbyte.push_back(QString::number(mdefect.defectRect.x).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.y).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.width).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.height).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[0]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[1]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[2]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectArea).toUtf8()); + QJsonObject detailObj; + detailObj.insert("defectName", "mdefect.defectName"); + detailObj.insert("defectRect.x", QString::number(mdefect.defectRect.x)); + detailObj.insert("defectRect.y", QString::number(mdefect.defectRect.y)); + detailObj.insert("defectRect.width", QString::number(mdefect.defectRect.width)); + detailObj.insert("defectRect.height", QString::number(mdefect.defectRect.height)); + detailObj.insert("defectScalar0", QString::number(mdefect.defectScalar[0])); + detailObj.insert("defectScalar1", QString::number(mdefect.defectScalar[1])); + detailObj.insert("defectScalar2", QString::number(mdefect.defectScalar[2])); + detailObj.insert("defectArea", QString::number(mdefect.defectArea)); + detailObj.insert("defectLength", QString::number(sqrt(mdefect.defectRect.width* mdefect.defectRect.width+ mdefect.defectRect.height* mdefect.defectRect.height))); + + detaillists.append(detailObj); + } + + + //使用完删除 + defectInfoList.clear(); + + //往主界面发 + //emit sendResultData(resMat, resQbyte); + //resQbyte.clear(); + + isDirExist(resImgSaveDir + mysaveKey1 + "/"); + QString qimgsavePath = resImgSaveDir + mysaveKey1 + "/" + mySN + myDataTime + ".png"; + //存图数据入队,按需 + if (resMat.size() > 0 ) + addImgToSaveStruct(resMat[0], mysaveKey1, resImgSaveDir + mysaveKey1 + "/" + mySN + myDataTime + ".png"); + detect_mutex->unlock(); + + obj.insert("detaillists", detaillists); + obj.insert("qimgsavePath", qimgsavePath); + document.setObject(obj); + //resByte.clear(); + QByteArray qa = document.toJson(); + //resByte .enqueue(qa); + + + //resMat.release(); + sourceImg.release(); + + mySave.out_Mat.resize(0); + mysaveKey1.clear(); + qApp->processEvents(); + + + ////原图和结果都往主界面发? + //std::vector resMat; + //resMat.push_back(img2D); + //resMat.push_back(sourceRectangles); + //QByteArray resByte = mysaveKey.toLocal8Bit(); + //resByte.append(myDir2D.toLocal8Bit()); + //resByte.append(mySN.toLocal8Bit()); + //resByte.append(myDataTime.toLocal8Bit()); + + ////往主界面发送图片和数据 + ////emit writeData(resMat, resByte); + //resMat.resize(0); + //resByte.resize(0); + } + catch (...) + { + qDebug() << "[Error] " << QString::fromUtf8("检测失败!"); + return false; + } + return true; + +} + +//存图加入队列 +void Hd_AI_2D3Ddata_module::addImgToSaveStruct(cv::Mat img2D, QString mysaveKey, QString savePath) +{ + //存图数据加保存队列,加锁,避免数据访问冲突 + saveStruct_mutex->lock(); + saveImgStruct mySave; + mySave.out_Mat = img2D.clone(); + //img2D.copyTo(mySave.out_Mat); + mySave.saveKey = (mysaveKey).toStdString(); + mySave.savePath = (savePath).toStdString(); + saveStruct.enqueue(mySave); + saveStruct_mutex->unlock(); +} +void Hd_AI_2D3Ddata_module::saveImgThread() +{ + while (1) + { + if (!ifdetectThread)return; + _sleep(1); + qApp->processEvents(); + if (saveStruct.size() < 1)continue; + for (int i = 0; i < saveStruct.size(); i++) + { + saveStruct_mutex->lock(); + saveImgStruct mysaveStruct = saveStruct.dequeue(); + saveStruct_mutex->unlock(); + //if (mysaveStruct.out_Mat.data)imwrite(mysaveStruct.savePath, mysaveStruct.out_Mat); + //std::cout << "savePath::" << mysaveStruct.savePath << std::endl; + _sleep(1); + } + } +} +//检测线程,应当只运行一次 +void Hd_AI_2D3Ddata_module::detectThread() +{ + do + { + if (!ifdetectThread)return; + + //此两行代码,避免程序卡死;_sleep的时间根据实际项目调整 + _sleep(2); + qApp->processEvents(); + //取数据加锁,避免数据访问冲突 + detect_mutex->lock(); + //if (HikMat.size() < 1 || saveKey.size() < 1 || Dir2D.size() < 1 || SN.size() < 1 )//|| DateTime1.size() < 1) + //{ + // detect_mutex->unlock(); + // continue; + //} + + cv::Mat sourceImg1 = HikMat[0];// .dequeue(); + QString mysaveKey = "saveKey";// .dequeue(); + QString myDir2D = "Dir2D";// .dequeue(); + QString mySN = "SN";// .dequeue(); + QString myDataTime = "DateTime1"; + detect_mutex->unlock(); + + //判断存图文件夹是否存在,不存在则创建 + { + //原图总文件夹 + isDirExist(oriImgSaveDir + mysaveKey); + //原图class总文件夹 + isDirExist(classImgSaveDir + mysaveKey); + //结果图总文件夹 + isDirExist(resImgSaveDir + mysaveKey); + + } + + //测试相机的, + while (sourceImg1.cols > 2000)cv::resize(sourceImg1, sourceImg1, cv::Size(), 0.5, 0.5); + + //存图数据入队 + //addImgToSaveStruct(sourceImg1, mysaveKey, oriImgSaveDir + mysaveKey + "/" + mySN + myDataTime + ".bmp"); + + //-------检测流程,根据实际项目修改--------- + AIdetect(sourceImg1, mysaveKey, oriImgSaveDir, mySN, myDataTime); + //sourceImg1.release(); + + mysaveKey.clear(); + myDir2D.clear(); + mySN.clear(); + myDataTime.clear(); + qApp->processEvents(); + + } while (ifThreadRunDetect); + +} + + +bool myMath(double a, double b) +{ + return a > b; +} + +static int runNum = 0; +QQueue timeAll_A; +QQueue timeAll_B; +bool Hd_AI_2D3Ddata_module::run() +{ + defectNums = 0; + vector srcMats; + + clock_t start = 0; + clock_t stop = 0; + double time = 0; + + //cv::Mat mat; + float prob = 0; + + if (HikMat.isEmpty()) + return true; + srcMats.push_back(HikMat[0]); + + start = clock(); + + + + stop = clock(); + time = stop - start; + timeAll_B.enqueue(time); + start = clock(); + + qSort(timeAll_A.begin(), timeAll_A.end(), myMath); + qSort(timeAll_B.begin(), timeAll_B.end(), myMath); + + timeAll_A.rend(); + timeAll_B.rend(); + + //Sleep(50); + //detectThread(); + //stop = clock(); + qDebug() << __FUNCTION__ << "line:" << __LINE__ << " run start ::runNum::" << runNum<<" cutTime::"< +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "imgproc/imgproc_c.h" + +#include "base.h" + + +#pragma execution_character_set("utf-8") + + + +//保存图片的结构体 +struct saveImgStruct; +//{ +// cv::Mat out_Mat; +// std::string saveKey; //关键字,用于LOG日志 +// std::string savePath; //保存路径 +//}; + +//初始化流程(一次):Hd_AI_2D3Ddata_module,initParas +//运行流程:writeData主线程把数据传过来,run,readData此线程把数据传主线程 +class Hd_AI_2D3Ddata_module :public Base +{ + Q_OBJECT +public: + Hd_AI_2D3Ddata_module(); + virtual ~Hd_AI_2D3Ddata_module(); + //从类中读数据到实例对象 + bool readData(std::vector&,QByteArray&); + //实例对象把数据写入到类 + bool writeData(std::vector&, QByteArray&); + bool initParas(QByteArray&); + //运行(Logic_taskthread.cpp) + bool run(); + //线程状态 + bool checkStatus();// { return true; }; + + bool encodeResultValue(QVector append_value,QByteArray &resultByte); + bool decodeAiValue(QByteArray byte,QVector &vec_ret); + //---------检测流程,根据实际项目修改--------- + bool AIdetect(cv::Mat img2D, QString saveKey, QString Dir2D, QString SN, QString DataTime); + + + +private: + + int allNum = 0; + int StationNo; + int img2D = 2; + + bool moduleStatus = true; + + //输入图片队列 + QQueue HikMat; + //输入关键字队列 + QString saveKey="saveKey"; + //结果路径文件夹队列 + QString Dir2D="Dir2D"; + //产品SN队列 + QString SN="SN"; + //产品时间戳队列 + QString DateTime1="DateTime1"; + + int paramNum; + + //是否使用线程检测方式 + bool ifThreadRunDetect = false; + //检测结果图 + std::vector resMat; + //检测结果 + bool resIfNg = false; + + QQueue resByte; + + //检测线程 + void detectThread(); + //存图线程 + void saveImgThread(); + + //保存图片队列 + QQueue saveStruct; + + //判断文件夹是否存在,不存在则创建 + void isDirExist(QString fullDirName); + + //存图加入队列 + void addImgToSaveStruct(cv::Mat img2D, QString saveKey, QString savePath); +}; + +extern "C" +{ + Q_DECL_EXPORT Hd_AI_2D3Ddata_module * create(); + Q_DECL_EXPORT void destory(Hd_AI_2D3Ddata_module * ptr); +} +//保存图片的结构体 +struct saveImgStruct +{ + cv::Mat out_Mat; + std::string saveKey; //关键字,用于LOG日志 + std::string savePath; //保存路径 +}; +#endif // Hd_AI_927_2D_module_H diff --git a/BaseModules/Hd_AI_2D3Ddata_module/base.h b/BaseModules/Hd_AI_2D3Ddata_module/base.h new file mode 100644 index 0000000..84d2f44 --- /dev/null +++ b/BaseModules/Hd_AI_2D3Ddata_module/base.h @@ -0,0 +1,69 @@ +#ifndef __BASECLASS_H__ +#define __BASECLASS_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class Base :public QObject +{ + Q_OBJECT +public: + bool init_flag; //是否初始化,false,true + bool status = true; //相机状态(判断相机是否断开连接) + std::string paras; //传输数据 + std::vector m_mat; //传输图片 + std::string moduleName; //模块名称 +public: + Base(){} + virtual ~Base(){} + virtual bool readData(std::vector&,QByteArray&){return true;} + virtual bool writeData(std::vector&,QByteArray&){return true;} + virtual bool initParas(QByteArray&){return true;} + virtual bool run() {return true;} + virtual bool checkStatus() { return true; } + +//signals: + //QByteArrayList,根据实际项目进行解析;因不确定每个参数的长度,固用队列的方式。每个QByteArray表示一个值,使用时先转换为QString + //参数,例:返回结果图;相机关键字(SN或userID)+保存路径+缺陷信息列表(缺陷名称,缺陷位置int(x,y,w,h),画框颜色Scalar(a,b,c),缺陷面积double) + //void sendResultData(cv::Mat resMat, QJsonObject resQbj); +}; + +/* +//QJsonObject 转QByteArray +{ + QJsonDocument document; + QJsonObject obj; + obj.insert(password, "pwd"); + obj.insert(userName, "usr"); + document.setObject(obj); + QByteArray abyte = document.toJson(QJsonDocument::Compact); +} + +//QByteArray转QJsonObject +{ + QByteArray ba = reply->readAll(); + QJsonDocument doc = QJsonDocument::fromJson(ba); + QJsonObject obj = doc.object(); +} +*/ +/* +//从类中读数据到实例对象 +virtual bool readData(std::vector&,QByteArray&){return true;} + + + + + + + + +*/ + +#endif diff --git a/BaseModules/Hd_AI_empty_module/CMakeLists.txt b/BaseModules/Hd_AI_empty_module/CMakeLists.txt new file mode 100644 index 0000000..06f29aa --- /dev/null +++ b/BaseModules/Hd_AI_empty_module/CMakeLists.txt @@ -0,0 +1,70 @@ +# 获取获取当前目录名 +get_filename_component(CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} NAME) +string(TIMESTAMP RUN_TIME) +message( " model start : " ${CURRENT_FOLDER}:${RUN_TIME}) + +set(DLL_NAMES "opencv" "halcon") +foreach(child ${DLL_NAMES}) + LIST(APPEND ENV_INCLUDE ${${child}_include}) + LIST(APPEND ENV_LIB ${${child}_lib}) + LIST(APPEND ENV_TARGET ${${child}_target_link}) +endforeach() +message(" ENV_INCLUDE : " ${ENV_INCLUDE} ) +message(" ENV_LIB : " ${ENV_LIB} ) +message(" ENV_TARGET : " ${ENV_TARGET} ) +include_directories( + + ${ENV_INCLUDE} + ) + +link_directories ( + ${ENV_LIB} + + ) + + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +SET(CMAKE_CXX_STANDARD 11) +SET(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_AUTOMOC ON) +SET(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) + +FILE(GLOB HEAD_FILES "./*.h" ) +FILE(GLOB SRC_FILES "./*.cpp") +FILE(GLOB UI_FILES "./*.ui") + + +#find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) + +add_library(${CURRENT_FOLDER} SHARED + ${HEAD_FILES} + ${SRC_FILES} + ${UI_FILES} + ) + + + +set_target_properties(${CURRENT_FOLDER} PROPERTIES LINKER_LANGUAGE C + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} + ) + + +target_link_libraries(${CURRENT_FOLDER} PRIVATE + ${ENV_TARGET} + Qt${QT_VERSION_MAJOR}::Core + ) + + +# target_compile_definitions(${CURRENT_FOLDER} PRIVATE HD_AIDEMO_MODULE_LIBRARY) + + + + +string(TIMESTAMP RUN_TIME) +message( " model end : " ${CURRENT_FOLDER}:${RUN_TIME}) diff --git a/BaseModules/Hd_AI_empty_module/Hd_AI_empty_module.cpp b/BaseModules/Hd_AI_empty_module/Hd_AI_empty_module.cpp new file mode 100644 index 0000000..3827322 --- /dev/null +++ b/BaseModules/Hd_AI_empty_module/Hd_AI_empty_module.cpp @@ -0,0 +1,985 @@ +#include "Hd_AI_empty_module.h" +#include + +#include +#include + +#include +using namespace cv; + +//原图保存文件夹 + QString oriImgSaveDir = "F:/ORI/"; +//原图class图保存文件夹 + QString classImgSaveDir = "F:/ORIclass/"; +//结果保存文件夹 + QString resImgSaveDir = "F:/res/"; + +//切图的class的width,根据项目实际设置! + int sizeW = 150; +//切图的class的height,根据项目实际设置! + int sizeH = 150; +//切图的class的width,根据项目实际设置!0为黑,255为白; + int fillColour = 0; + + +//检测线程锁 + QMutex* detect_mutex; +//保存线程锁 + QMutex* saveStruct_mutex; +//检测线程运行标志 + bool ifdetectThread = false; + + QString cameraKey_index = ""; + + QString byteArrayToUnicode(const QByteArray array) { + + // state用于保存转换状态,它的成员invalidChars,可用来判断是否转换成功 + // 如果转换成功,则值为0,如果值大于0,则说明转换失败 + QTextCodec::ConverterState state; + // 先尝试使用utf-8的方式把QByteArray转换成QString + QString text = QTextCodec::codecForName("UTF-8")->toUnicode(array.constData(), array.size(), &state); + // 如果转换时无效字符数量大于0,说明编码格式不对 + if (state.invalidChars > 0) + { + // 再尝试使用GBK的方式进行转换,一般就能转换正确(当然也可能是其它格式,但比较少见了) + text = QTextCodec::codecForName("GBK")->toUnicode(array); + } + return text; + } + + +// 缺陷信息结构体 +typedef struct { + QString defectName = "";//缺陷名称 + cv::Rect defectRect = { 0,0,0,0 };//缺陷位置 + cv::Scalar defectScalar = cv::Scalar(0, 0, 0);//画框颜色 + double defectArea = 0;//缺陷真实面积 + double defectDepth = 0;//缺陷深度/高度,3D信息 +}defectInfo; + + + +//判断文件是否存在,不存在则创建 +bool isFileExist(QString fullFileName) +{ + QFileInfo fileInfo(fullFileName); + if (fileInfo.isFile()) + { + return true; + } + return false; +} + +void GetStringSize(HDC hdc, const char* str, int* w, int* h) +{ + SIZE size; + GetTextExtentPoint32A(hdc, str, strlen(str), &size); + if (w != 0) *w = size.cx; + if (h != 0) *h = size.cy; +} +//在图像写中文,英文也可以写 +void putTextZH(cv::Mat& dst, const char* str, cv::Point org, cv::Scalar color, int fontsize, + const char* fn = "Arial", bool italic = false, bool underline = false) +{ + CV_Assert(dst.data != 0 && (dst.channels() == 1 || dst.channels() == 3)); + + + int x, y, r, b; + //坐标点大于图像宽和高直接返回 + if (org.x > dst.cols || org.y > dst.rows) return; + x = org.x < 0 ? -org.x : 0; + y = org.y < 0 ? -org.y : 0; + + + LOGFONTA lf; + lf.lfHeight = -fontsize; //字体高度 + lf.lfWidth = 0; //平均宽度 + lf.lfEscapement = 0; //字符排列角度 + lf.lfOrientation = 0; //字符本身旋转的角度 + lf.lfWeight = 5; //设置字体线条的宽度 + lf.lfItalic = italic; //斜体 + lf.lfUnderline = underline; //下划线 + lf.lfStrikeOut = 0; //是否字符中央加横线 + lf.lfCharSet = DEFAULT_CHARSET; //字符集 + lf.lfOutPrecision = 0; //字体的精确度 + lf.lfQuality = PROOF_QUALITY; //字体质量 + lf.lfPitchAndFamily = 0; //选择字体的间距和字体家族 + strcpy_s(lf.lfFaceName, fn); //字体的名称 + + + HFONT hf = CreateFontIndirectA(&lf); + HDC hdc = CreateCompatibleDC(0); + HFONT holdfont = (HFONT)SelectObject(hdc, hf); + + + int strBaseW = 0, strBaseH = 0; + int singleRow = 0; + char buf[1 << 12]; + strcpy_s(buf, str); + char* bufT[1 << 12]; //这个用于分隔字符串后剩余的字符,可能会超出。 + + + //处理多行 + { + int nnh = 0; + int cw, ch; + + + const char* ln = strtok_s(buf, "\n", bufT); + while (ln != 0) + { + GetStringSize(hdc, ln, &cw, &ch); + strBaseW = max(strBaseW, cw); + strBaseH = max(strBaseH, ch); + + + ln = strtok_s(0, "\n", bufT); + nnh++; + } + singleRow = strBaseH; + strBaseH *= nnh; + } + + + if (org.x + strBaseW < 0 || org.y + strBaseH < 0) + { + SelectObject(hdc, holdfont); + DeleteObject(hf); + DeleteObject(hdc); + return; + } + + + r = org.x + strBaseW > dst.cols ? dst.cols - org.x - 1 : strBaseW - 1; + b = org.y + strBaseH > dst.rows ? dst.rows - org.y - 1 : strBaseH - 1; + org.x = org.x < 0 ? 0 : org.x; + org.y = org.y < 0 ? 0 : org.y; + + + BITMAPINFO bmp = { 0 }; + BITMAPINFOHEADER& bih = bmp.bmiHeader; + int strDrawLineStep = strBaseW * 3 % 4 == 0 ? strBaseW * 3 : (strBaseW * 3 + 4 - ((strBaseW * 3) % 4)); + + + bih.biSize = sizeof(BITMAPINFOHEADER); + bih.biWidth = strBaseW; + bih.biHeight = strBaseH; + bih.biPlanes = 1; + bih.biBitCount = 24; + bih.biCompression = BI_RGB; + bih.biSizeImage = strBaseH * strDrawLineStep; + bih.biClrUsed = 0; + bih.biClrImportant = 0; + + + void* pDibData = 0; + HBITMAP hBmp = CreateDIBSection(hdc, &bmp, DIB_RGB_COLORS, &pDibData, 0, 0); + + + CV_Assert(pDibData != 0); + HBITMAP hOldBmp = (HBITMAP)SelectObject(hdc, hBmp); + + + //color.val[2], color.val[1], color.val[0] + SetTextColor(hdc, RGB(255, 255, 255)); + SetBkColor(hdc, 0); + //SetStretchBltMode(hDC, COLORONCOLOR); + + + strcpy_s(buf, str); + const char* ln = strtok_s(buf, "\n", bufT); + int outTextY = 0; + while (ln != 0) + { + TextOutA(hdc, 0, outTextY, ln, strlen(ln)); + outTextY += singleRow; + ln = strtok_s(0, "\n", bufT); + } + uchar* dstData = (uchar*)dst.data; + int dstStep = dst.step / sizeof(dstData[0]); + unsigned char* pImg = (unsigned char*)dst.data + org.x * dst.channels() + org.y * dstStep; + unsigned char* pStr = (unsigned char*)pDibData + x * 3; + for (int tty = y; tty <= b; ++tty) + { + unsigned char* subImg = pImg + (tty - y) * dstStep; + unsigned char* subStr = pStr + (strBaseH - tty - 1) * strDrawLineStep; + for (int ttx = x; ttx <= r; ++ttx) + { + for (int n = 0; n < dst.channels(); ++n) { + double vtxt = subStr[n] / 255.0; + int cvv = vtxt * color.val[n] + (1 - vtxt) * subImg[n]; + subImg[n] = cvv > 255 ? 255 : (cvv < 0 ? 0 : cvv); + } + + + subStr += 3; + subImg += dst.channels(); + } + } + + + SelectObject(hdc, hOldBmp); + SelectObject(hdc, holdfont); + DeleteObject(hf); + DeleteObject(hBmp); + DeleteDC(hdc); +} + +void drawDefects(cv::Mat& sourceMat, QQueue defectInfoList) +{ + for (int i = 0; i < defectInfoList.size(); i++) + { + defectInfo mdefect = defectInfoList[i]; + + cv::rectangle(sourceMat, cv::Point(mdefect.defectRect.x, mdefect.defectRect.y), + cv::Point(mdefect.defectRect.x + mdefect.defectRect.width, mdefect.defectRect.y + mdefect.defectRect.height), mdefect.defectScalar, 3, 8); + + QByteArray path_arr = mdefect.defectName.toLocal8Bit(); + const char* path = path_arr.data(); + putTextZH(sourceMat, path, cv::Point(mdefect.defectRect.x, mdefect.defectRect.y - 50), mdefect.defectScalar, 50, "微软雅黑"); + } +} + + + +//判断文件夹是否存在,不存在则创建 +void Hd_AI_empty_module::isDirExist(QString fullDirName) +{ + QDir* photo = new QDir; + bool exist = photo->exists(fullDirName); + if (exist) + { + //qDebug() << fullDirName << "::已存在"; + } + else + { + //创建photo文件夹 + //qDebug() << fullDirName << "::不存在,创建"; + photo->mkdir(fullDirName); + } + delete photo; + photo = nullptr; +} + +Hd_AI_empty_module* create() +{ + qDebug() << "[INFO] " << " Hd_AI_empty_module create success!" ; + return new Hd_AI_empty_module; +} + +void destory(Hd_AI_empty_module* ptr) +{ + qDebug() << "[INFO] " << "Hd_AI_empty_module destory success!"; + if(ptr) + { + delete ptr; + ptr = nullptr; + } +} + +Hd_AI_empty_module::Hd_AI_empty_module() +{ + detect_mutex = new QMutex; + saveStruct_mutex = new QMutex; + ifdetectThread = false; + + for (int i = 0; i < 4; i++) + { + QString DirPath = "E:/testImg/source" + QString::number(i); + QStringList imgFilters; + imgFilters << "*.jpg" << "*.png" << "*.PNG" << "*.gif" << "*.tif" << "*.jpeg" << "*.bmp"; + QDir qdir(DirPath); + //返回文件名列表 + QStringList localSourceImgsName = qdir.entryList(imgFilters, QDir::Files | QDir::Readable, QDir::Name); + for (int j = 0; j < localSourceImgsName.size(); j++) + { + QString imgPath = DirPath + "/" + localSourceImgsName[j]; + QFile myf(imgPath); + if (myf.exists()) + myf.remove(); + //Sleep(1); + } + } +} + +Hd_AI_empty_module::~Hd_AI_empty_module() +{ + ifdetectThread = false; + Sleep(10); + if (detect_mutex) + { + delete detect_mutex; + detect_mutex = nullptr; + } + if (saveStruct_mutex) + { + delete saveStruct_mutex; + saveStruct_mutex = nullptr; + } + /*DestroySegObj(pSeg); + DestroyClsObj(pCls);*/ +} +//从类中读数据到实例对象 +bool Hd_AI_empty_module::readData(std::vector&vec_mat,QByteArray &data) +{ + detect_mutex->lock(); + //qDebug() << __FUNCTION__ << " line:" <<__LINE__ << " data len:" << data.length(); + if (resMat.size()>0) + { + vec_mat.push_back(resMat[0]); + resMat.clear(); + } + else + { + vec_mat.push_back(HikMat[0]); + //qDebug() << __FUNCTION__ << " line:" << __LINE__ << " resMat.data err:"; + } + if (allNum++ % 21 == 20) + data = "2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2";// resByte.dequeue(); + else + data = "1";//1OK,2NG + resByte.clear(); + ////之后根据结果类修改 + //if(resIfNg == true) + // data = "NG"; + //else data = "OK"; + detect_mutex->unlock(); + /*if(cameraKey_index.contains('_')) + qDebug() << "[INFO] " << __FUNCTION__ << " line:" << __LINE__ << " checkImg getDetectData--CameraName:" + << cameraKey_index.split("_")[0] << " imgIndex:" << cameraKey_index.split("_")[1]; + else + qDebug() << "[INFO] " << __FUNCTION__ << " line:" << __LINE__ << " checkImg getDetectData--CameraName imgIndex:" << cameraKey_index;*/ + return true; +} +//从类中读数据到实例对象 +bool Hd_AI_empty_module::encodeResultValue(QVector append_value,QByteArray &resultByte) +{ + try + { + std::string sendMsg; + for(int i = 0 ; i < append_value.size();i++) + { + std::string value = append_value.at(1); + //type + int type = 3; + std::string m_type; + m_type.insert(0,4,'1'); + memcpy ( (void*)m_type.c_str(),(void*)&type,4 ); + sendMsg.append(m_type); + + //len + int len = value.length(); + std::string m_len; + m_len.insert(0,4,'1'); + memcpy ( (void*)m_len.c_str(),(void*)&len,4 ); + sendMsg.append(m_len); + + //data x + sendMsg.append(value); + } + resultByte = QByteArray::fromStdString(sendMsg); + } catch (QString ev) + { + qCritical() << "[Error] " << " ev:" << ev; + return false; + } + return true; +} + +int myallNum[4] = {0}; +QMap lastImgMap; +//接收数据 +bool Hd_AI_empty_module::writeData(std::vector& vec_mat, QByteArray &data) +{ + //qDebug() << __FUNCTION__ << "line:"<< __LINE__ << " data len" << data.length() ; + if(vec_mat.empty()) + { + qCritical() << "[Error] " << " vec_mat is null !"; + return false; + } + detect_mutex->lock(); + HikMat.clear(); + HikMat.enqueue(vec_mat[0]); + + QString savePath; + QString sData = data; + QStringList splitDataList = sData.split(","); + if(splitDataList.size()>=4) + if(splitDataList[2].contains('_')) + cameraKey_index = splitDataList[2]; + int index = -1; + if (sData.contains("offline-camera0")) + { + index = 0; + savePath = "E:\\testImg\\source0\\"+QString::number(myallNum[0]++) + ".bmp"; + } + else if (sData.contains("offline-camera1")) + { + index = 1; + savePath = "E:\\testImg\\source1\\" + QString::number(myallNum[1]++) + ".bmp"; + } + else if (sData.contains("offline-camera2")) + { + index = 2; + savePath = "E:\\testImg\\source2\\" + QString::number(myallNum[2]++) + ".bmp"; + } + else if (sData.contains("offline-camera3")) + { + index = 3; + savePath = "E:\\testImg\\source3\\" + QString::number(myallNum[3]++) + ".bmp"; + } + + if (!savePath.isEmpty()) + { + //std::cout << "try savePath::" << savePath.toStdString() << std::endl; + //测试相机的, + while (HikMat[0].cols > 2000)cv::resize(HikMat[0], HikMat[0], cv::Size(), 0.08, 0.08); + addImgToSaveStruct(HikMat[0], "0", savePath);// + } + + //if (myallNum[index] == 1) + //{ + // cv::Mat img; + // lastImgMap.insert(index, img); + //} + //else + //{ + // //判断和上一张图,是否重复 + // int dataLength = HikMat[0].total() * HikMat[0].elemSize(); + // bool res = false; + // if (myallNum[index] > 0) + // { + // cv::Mat img = lastImgMap.value(index); + // if (img.total() * img.elemSize() == dataLength) + // { + // res = memcmp(img.data, HikMat[0].data, dataLength) == 0; + // if (res == true) + // std::cout << "res ==true ====!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; + // } + // } + //} + //lastImgMap.insert(index, HikMat[0]); + + //or检测:保存路径,拍照面描述,相机key_第几张图,SN_时间戳 + //and检测:保存路径,拍照面描述,相机key_第几张图,相机key_第几张图,SN_时间戳,SN_时间戳 + //汇总:保存路径,拍照面描述,触发信号_序号列表0,SN_时间戳 + QString qstring_data = data; + QStringList datalist = qstring_data.split(','); + + + /*saveKey.enqueue("datalist[0]"); + Dir2D.enqueue("datalist[1]"); + QStringList SN_dataTime; + SN_dataTime = datalist[3].split('_'); + DateTime1 = "SN_dataTime[1]"; + SN.enqueue("SN_dataTime[0]");*/ + //qCritical() << __FUNCTION__ << " line: " << __LINE__ << " data:" << qstring_data; + detect_mutex->unlock(); + + //qDebug() << __FUNCTION__ << "line:" << __LINE__ << "[INFO] " << " data: " << data << " run end"; + //cv::Mat resultDstImg = vec_mat[0].clone();// = pSeg->Evaluate(sourceImg); //返回单通道二值图 图片错误输出Image Error!但不报错。。 + //resultDstImg = pSeg->Evaluate(resultDstImg); + //resultDstImg.release(); + + return true; +} + +//传入initParas函数,格式为:相机key+参数名1#参数值1#参数值2+参数名2#参数值1... +//初始化 +bool Hd_AI_empty_module::initParas(QByteArray& byteArray) +{ + QByteArrayList valueList = byteArray.split('+'); + QStringList valueiList; + + if (byteArray.contains("onlySetParameter")) + { + qDebug() << __FUNCTION__ << " line:" << __LINE__ << "onlySetParameter,valueList[0]:" << valueList[0]; + if (valueList.size() > 1) + for (int i = 1; i < valueList.size(); i++) + { + QString valuei = byteArrayToUnicode(valueList[i]); + qDebug() << __FUNCTION__ << " line:" << __LINE__ << "onlySetParameter,lastName:" << valueList[0] << " ,valuei:" << valuei; + } + return true; + } + + + if (valueList.size() > 1) + for (int i = 1; i < valueList.size(); i++) + { + QString valuei = byteArrayToUnicode(valueList[i]); + valueiList.append(valuei); + } + + + /*pSeg = CreateSegObjS(pSeg_modulePath, 128, gpuId); + pCls = CreateClsObjV3(pCls_modulePath, gpuId, 1);*/ + + + //StationNo = vec_ret.at(0).toInt(); + + //InitThreads(StationNo, img2D); + //InitModels(StationNo, img2D); + + //运行检测线程 + ifdetectThread = true; + + //线程检测:结果类完成时,使用 + //ifThreadRunDetect = true; + //QFuture future1 = QtConcurrent::run(this, &Hd_AI_empty_module::detectThread); + //运行存图线程 + QFuture future2 = QtConcurrent::run(this, &Hd_AI_empty_module::saveImgThread); + //detectThread(); + + //原图总文件夹 + isDirExist(oriImgSaveDir); + //原图class总文件夹 + isDirExist(classImgSaveDir); + //结果图总文件夹 + isDirExist(resImgSaveDir); + + + //qDebug() << "[INFO] " << " StationNo:" << StationNo << " img2D:" << img2D ; + return true; +} +// 解码 +bool Hd_AI_empty_module::decodeAiValue(QByteArray byteArray,QVector &vec_ret) +{ + if(byteArray.isEmpty()) + { + qCritical() << "[Error] " << " byteArray is null!"; + return false; + } + + /*******************************************/ + byteArray.remove(0,8); + QByteArray mm_data = byteArray.mid(0,4); + memcpy((void*)¶mNum,(void*)mm_data.data(), 4); + qDebug() << "[INFO] " << " paramNum:" << paramNum; + byteArray.remove(0,4); + /*******************************************/ + + while (!byteArray.isEmpty()) + { + int type = 0; + QByteArray m_type = byteArray.mid(0,4); + memcpy((void*)&type,(void*)m_type.data(), 4); + byteArray.remove(0,4); + + int len = 0; + QByteArray m_len = byteArray.mid(0,4); + memcpy((void*)&len,(void*)m_len.data(), 4); + byteArray.remove(0,4); + + QByteArray mm_data = byteArray.mid(0,len); + vec_ret.append(mm_data); + byteArray.remove(0,len); + } + return true; +} + +//---------检测流程,根据实际项目修改--------- +bool Hd_AI_empty_module::AIdetect(cv::Mat img2D, QString mysaveKey, QString myDir2D, QString mySN, QString myDataTime) +{ + try + { + //存图数据加保存队列,加锁,避免数据访问冲突 + saveStruct_mutex->lock(); + saveImgStruct mySave; + Mat sourceImg; + sourceImg = img2D.clone(); + //img2D.copyTo(sourceImg); + //img2D.release(); + QString mysaveKey1 = mysaveKey; //"offlineStation1_off_1" + saveStruct_mutex->unlock(); + + QJsonDocument document; + QJsonObject obj; + obj.insert("result_key", "mysaveKey"); + obj.insert("SN", "mySN"); + obj.insert("DataTime", "myDataTime"); + + + //QFile csvName("test.csv"); + //QStringList lines; + //lines << "class,name\n" << "3,4,5,6,7\n" << "a,b,c,d\n"; + //if (csvName.open(QIODevice::WriteOnly)) //若文件不存在,会自动创建 + //{ + // for (int i = 0; i < lines.size(); i++) + // csvName.write(lines[i].toStdString().c_str()); + // csvName.close(); + //} + + QQueue defectInfoList; + + //seg后class检测逻辑 + /*if (0) { + Mat sourceRectangles;// 在原图缺陷位置,边界矩形框出 + sourceRectangles = sourceImg.clone(); + //sourceImg.copyTo(sourceRectangles); + vector> contours; + + //seg检测 + Mat resultDstImg;// = sourceImg.clone();// = pSeg->Evaluate(sourceImg); //返回单通道二值图 图片错误输出Image Error!但不报错。。 + resultDstImg = pSeg->Evaluate(sourceImg); + //int resultClass = pCls->Evaluate(sourceImg); //类别id + + //opencv对二值图进行处理 + //GaussianBlur(resultDstImg, resultDstImg, Size(3, 3), 1); //缺陷过滤值较大时,可以减少检出数;缺陷较小时,漏检较多 + threshold(resultDstImg, resultDstImg, pSeg->m_classes, 255, THRESH_BINARY_INV);//大于部分设为0,小于部分设为255 + //findContours(resultDstImg, contours, cv::noArray(), cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE); //不识别内部轮廓,有些情况抓到的图像外框? + findContours(resultDstImg, contours, cv::noArray(), cv::RETR_TREE, cv::CHAIN_APPROX_NONE); //需要内部轮廓的写法 + + if (contours.size() == 0) + { + //printf("Notlabeled\n"); + } + else + { + for (int j = 0; j < contours.size(); j++) + { + Rect rect1 = boundingRect(Mat(contours[j])); + + //最小缺陷过滤参数,根据项目实际设置! + int filterNum = 10; + float w = rect1.width * 1.0; + float h = rect1.height * 1.0; + if ((w / sourceImg.cols > 0.98) || (h / sourceImg.rows > 0.98)) + { + //抓到图像外框了 + //qDebug() << "NG is too big..."; + continue; + } + //且逻辑,有的项目需要或逻辑!! + if ((w > filterNum && h > filterNum))//||rect1.area> filterNum*filterNum*1.5) + { + //class检测mat + Mat imgCls; + + //此段为切图逻辑为: + //缺陷外扩5像素; + //判断最大边,大于class建网大小的,按照最大边尺寸比例切大图,然后resize为建网大小;最大边小于等于建网大小的,按照建网大小切图; + //越界填充 + { + int startX = rect1.x - 5; + int startY = rect1.y - 5; + int endX = rect1.x + rect1.width + 5; + int endY = rect1.y + rect1.height + 5; + + //尺寸比例 + double maxscaler, scalerX, scalerY; + maxscaler = 1.0; + scalerX = (endX - startX) * 1.0 / sizeW;//*1.0转为float,避免被取整了 + scalerY = (endY - startY) * 1.0 / sizeH; + + maxscaler = max(maxscaler, max(scalerX, scalerY)); + + int avgX = (rect1.x + rect1.x + rect1.width) / 2; //中点X位置 + int avgY = (rect1.y + rect1.y + rect1.height) / 2;//中点Y位置 + + startX = avgX - int(maxscaler * sizeW / 2);//强转为int + endX = startX + int(maxscaler * sizeW); + startY = avgY - int(maxscaler * sizeH / 2); + endY = startY + int(maxscaler * sizeH); + + //判断是否越界,越界要填充的像素个数 + int copyTop = max(0, 0 - startY); + int copyButton = max(0, endY - sourceImg.rows); + int copyLeft = max(0, 0 - startX); + int copyRight = max(0, endX - sourceImg.cols); + + //切图不要越界,会崩溃 + Mat imgCut = sourceImg(Range(max(0, startY - copyTop), min(sourceImg.rows, endY - copyButton)), + Range(max(0, startX - copyLeft), min(sourceImg.cols, endX - copyRight))); //起始行,终止行;起始列,终止列 + + //图像扩充 + if (sourceImg.channels() == 1) + { + copyMakeBorder(imgCut, imgCut, copyTop, copyButton, copyLeft, copyRight, BORDER_CONSTANT, fillColour); + } + else + { + copyMakeBorder(imgCut, imgCut, copyTop, copyButton, copyLeft, copyRight, BORDER_CONSTANT, Scalar(fillColour, fillColour, fillColour)); + } + //resize为建网大小 + cv::resize(imgCut, imgCls, cv::Size(sizeW, sizeH)); + imgCut.release(); + } + + + int resultClass = 0; + float prob = 1.0; + + resultClass = pCls->Evaluate(imgCls); //类别id + prob = pCls->getProbability(); //可能性 + + //切图保存,按需 + { + isDirExist(classImgSaveDir + mysaveKey1 + "/class_" + QString::number(resultClass)); + //存图数据入队,按需 + addImgToSaveStruct(imgCls, mysaveKey1, classImgSaveDir + mysaveKey1 + "/class_" + QString::number(resultClass) + "/" + mySN + myDataTime + QString::number(j) + ".bmp"); + } + + //此处应添加缺陷计数逻辑 + + if (resultClass == 0)//OK + { + ; + } + else if (resultClass == 1)//划伤Scratch + { + resIfNg = true; + //rectangle(sourceRectangles, rect1.tl(), rect1.br(), Scalar(0, 0, 255), 3, 8); + ////可行,必须转一下格式 + //{ + // QString pathQstr = "划伤"; + // QByteArray path_arr = pathQstr.toLocal8Bit(); + // const char* path = path_arr.data(); + // putTextZH(sourceRectangles, path, cv::Point(rect1.tl().x, rect1.tl().y - 5), Scalar(255, 0, 0), 50, "微软雅黑"); + //} + + defectInfo mdefectInfo; + mdefectInfo.defectName = "划伤"; + mdefectInfo.defectRect = rect1; + mdefectInfo.defectArea = contourArea(contours[j]); + mdefectInfo.defectScalar = cv::Scalar(0, 0, 255); + defectInfoList.enqueue(mdefectInfo); + } + else if (resultClass == 2)//碰伤 + { + resIfNg = true; + defectInfo mdefectInfo; + mdefectInfo.defectName = "碰伤"; + mdefectInfo.defectRect = rect1; + mdefectInfo.defectArea = contourArea(contours[j]); + mdefectInfo.defectScalar = cv::Scalar(0, 255, 255); + defectInfoList.enqueue(mdefectInfo); + } + imgCls.release(); + } + else { + //cout << "ng is too small<" << filterNum << endl; + continue; + } + } + } + //cv::Mat resMat = img2D.clone(); + sourceRectangles.release(); + contours.resize(0); + resultDstImg.release(); + } + */ + + detect_mutex->lock(); + //resMat = sourceImg.clone(); + //sourceImg.copyTo(resMat); + resMat.push_back(sourceImg); + //结果图画框和缺陷,在resMat上绘制 + if (resMat.size() > 0) + drawDefects(resMat[0], defectInfoList); + + //QByteArray,根据实际项目进行解析 + //参数,例:返回结果图;相机关键字(SN或userID)+保存路径+缺陷信息列表(缺陷名称,缺陷位置int(x,y,w,h),画框颜色Scalar(a,b,c),缺陷面积double) + + QJsonArray detaillists; + //QByteArrayList resQbyte; + for (int i = 0; i < defectInfoList.size(); i++) + { + defectInfo mdefect = defectInfoList[i]; + //resQbyte.push_back(mdefect.defectName.toLocal8Bit()); //中文也可以QString::number(1.1).toUtf8() + //resQbyte.push_back(QString::number(mdefect.defectRect.x).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.y).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.width).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.height).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[0]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[1]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[2]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectArea).toUtf8()); + QJsonObject detailObj; + detailObj.insert("defectName", "mdefect.defectName"); + detailObj.insert("defectRect.x", QString::number(mdefect.defectRect.x)); + detailObj.insert("defectRect.y", QString::number(mdefect.defectRect.y)); + detailObj.insert("defectRect.width", QString::number(mdefect.defectRect.width)); + detailObj.insert("defectRect.height", QString::number(mdefect.defectRect.height)); + detailObj.insert("defectScalar0", QString::number(mdefect.defectScalar[0])); + detailObj.insert("defectScalar1", QString::number(mdefect.defectScalar[1])); + detailObj.insert("defectScalar2", QString::number(mdefect.defectScalar[2])); + detailObj.insert("defectArea", QString::number(mdefect.defectArea)); + detailObj.insert("defectLength", QString::number(sqrt(mdefect.defectRect.width* mdefect.defectRect.width+ mdefect.defectRect.height* mdefect.defectRect.height))); + + detaillists.append(detailObj); + } + + + //使用完删除 + defectInfoList.clear(); + + //往主界面发 + //emit sendResultData(resMat, resQbyte); + //resQbyte.clear(); + + isDirExist(resImgSaveDir + mysaveKey1 + "/"); + QString qimgsavePath = resImgSaveDir + mysaveKey1 + "/" + mySN + myDataTime + ".png"; + //存图数据入队,按需 + if (resMat.size() > 0 ) + addImgToSaveStruct(resMat[0], mysaveKey1, resImgSaveDir + mysaveKey1 + "/" + mySN + myDataTime + ".png"); + detect_mutex->unlock(); + + obj.insert("detaillists", detaillists); + obj.insert("qimgsavePath", qimgsavePath); + document.setObject(obj); + //resByte.clear(); + QByteArray qa = document.toJson(); + //resByte .enqueue(qa); + + + //resMat.release(); + sourceImg.release(); + + mySave.out_Mat.resize(0); + mysaveKey1.clear(); + qApp->processEvents(); + + + ////原图和结果都往主界面发? + //std::vector resMat; + //resMat.push_back(img2D); + //resMat.push_back(sourceRectangles); + //QByteArray resByte = mysaveKey.toLocal8Bit(); + //resByte.append(myDir2D.toLocal8Bit()); + //resByte.append(mySN.toLocal8Bit()); + //resByte.append(myDataTime.toLocal8Bit()); + + ////往主界面发送图片和数据 + ////emit writeData(resMat, resByte); + //resMat.resize(0); + //resByte.resize(0); + } + catch (...) + { + qDebug() << "[Error] " << QString::fromUtf8("检测失败!"); + return false; + } + return true; + +} + +//存图加入队列 +void Hd_AI_empty_module::addImgToSaveStruct(cv::Mat img2D, QString mysaveKey, QString savePath) +{ + //存图数据加保存队列,加锁,避免数据访问冲突 + saveStruct_mutex->lock(); + saveImgStruct mySave; + mySave.out_Mat = img2D.clone(); + //img2D.copyTo(mySave.out_Mat); + mySave.saveKey = (mysaveKey).toStdString(); + mySave.savePath = (savePath).toStdString(); + saveStruct.enqueue(mySave); + saveStruct_mutex->unlock(); +} +void Hd_AI_empty_module::saveImgThread() +{ + while (1) + { + if (!ifdetectThread)return; + _sleep(1); + qApp->processEvents(); + if (saveStruct.size() < 1)continue; + for (int i = 0; i < saveStruct.size(); i++) + { + clock_t start, stop; + start = clock(); + saveStruct_mutex->lock(); + saveImgStruct mysaveStruct = saveStruct.dequeue(); + saveStruct_mutex->unlock(); + stop = clock(); + if(stop-start >1000) + std::cout << "lock stop-start >1000::************************" << stop - start << std::endl; + start = clock(); + //if (mysaveStruct.out_Mat.data)imwrite(mysaveStruct.savePath, mysaveStruct.out_Mat); + //std::cout << "savePath::" << mysaveStruct.savePath << std::endl; + stop = clock(); + if (stop - start > 1000) + std::cout << "imwrite stop-start >1000::--------------------------"<< stop - start << std::endl; + _sleep(1); + } + } +} +//检测线程,应当只运行一次 +void Hd_AI_empty_module::detectThread() +{ + do + { + if (!ifdetectThread)return; + + //此两行代码,避免程序卡死;_sleep的时间根据实际项目调整 + _sleep(2); + qApp->processEvents(); + //取数据加锁,避免数据访问冲突 + detect_mutex->lock(); + //if (HikMat.size() < 1 || saveKey.size() < 1 || Dir2D.size() < 1 || SN.size() < 1 )//|| DateTime1.size() < 1) + //{ + // detect_mutex->unlock(); + // continue; + //} + + cv::Mat sourceImg1 = HikMat[0];// .dequeue(); + QString mysaveKey = "saveKey";// .dequeue(); + QString myDir2D = "Dir2D";// .dequeue(); + QString mySN = "SN";// .dequeue(); + QString myDataTime = "DateTime1"; + detect_mutex->unlock(); + + //判断存图文件夹是否存在,不存在则创建 + { + //原图总文件夹 + isDirExist(oriImgSaveDir + mysaveKey); + //原图class总文件夹 + isDirExist(classImgSaveDir + mysaveKey); + //结果图总文件夹 + isDirExist(resImgSaveDir + mysaveKey); + + } + + //测试相机的, + while (sourceImg1.cols > 2000)cv::resize(sourceImg1, sourceImg1, cv::Size(), 0.5, 0.5); + + //存图数据入队 + //addImgToSaveStruct(sourceImg1, mysaveKey, oriImgSaveDir + mysaveKey + "/" + mySN + myDataTime + ".bmp"); + + //-------检测流程,根据实际项目修改--------- + AIdetect(sourceImg1, mysaveKey, oriImgSaveDir, mySN, myDataTime); + //sourceImg1.release(); + + mysaveKey.clear(); + myDir2D.clear(); + mySN.clear(); + myDataTime.clear(); + qApp->processEvents(); + + } while (ifThreadRunDetect); + +} + +static int runNum = 0; +bool Hd_AI_empty_module::run() +{ + clock_t start, stop; + start = clock(); + + //Sleep(1000); + //detectThread(); + //stop = clock(); + //qDebug() << __FUNCTION__ << "line:" << __LINE__ << " run start ::runNum::" << runNum++<<" cutTime::"< +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "imgproc/imgproc_c.h" + +#include "base.h" + +#pragma execution_character_set("utf-8") + + + +//保存图片的结构体 +struct saveImgStruct; +//{ +// cv::Mat out_Mat; +// std::string saveKey; //关键字,用于LOG日志 +// std::string savePath; //保存路径 +//}; + +//初始化流程(一次):Hd_AI_empty_module,initParas +//运行流程:writeData主线程把数据传过来,run,readData此线程把数据传主线程 +class Hd_AI_empty_module :public Base +{ + Q_OBJECT +public: + Hd_AI_empty_module(); + virtual ~Hd_AI_empty_module(); + //从类中读数据到实例对象 + bool readData(std::vector&,QByteArray&); + //实例对象把数据写入到类 + bool writeData(std::vector&, QByteArray&); + bool initParas(QByteArray&); + //运行(Logic_taskthread.cpp) + bool run(); + //线程状态 + bool checkStatus();// { return true; }; + + bool encodeResultValue(QVector append_value,QByteArray &resultByte); + bool decodeAiValue(QByteArray byte,QVector &vec_ret); + //---------检测流程,根据实际项目修改--------- + bool AIdetect(cv::Mat img2D, QString saveKey, QString Dir2D, QString SN, QString DataTime); + + + +private: + + int allNum = 0; + int StationNo=0; + int img2D = 2; + + bool moduleStatus = true; + + //输入图片队列 + QQueue HikMat; + //输入关键字队列 + QString saveKey="saveKey"; + //结果路径文件夹队列 + QString Dir2D="Dir2D"; + //产品SN队列 + QString SN="SN"; + //产品时间戳队列 + QString DateTime1="DateTime1"; + + int paramNum; + + //是否使用线程检测方式 + bool ifThreadRunDetect = false; + //检测结果图 + std::vector resMat; + //检测结果 + bool resIfNg = false; + + QQueue resByte; + + //检测线程 + void detectThread(); + //存图线程 + void saveImgThread(); + + //保存图片队列 + QQueue saveStruct; + + //判断文件夹是否存在,不存在则创建 + void isDirExist(QString fullDirName); + + //存图加入队列 + void addImgToSaveStruct(cv::Mat img2D, QString saveKey, QString savePath); +}; + +extern "C" +{ + Q_DECL_EXPORT Hd_AI_empty_module * create(); + Q_DECL_EXPORT void destory(Hd_AI_empty_module * ptr); +} +//保存图片的结构体 +struct saveImgStruct +{ + cv::Mat out_Mat; + std::string saveKey; //关键字,用于LOG日志 + std::string savePath; //保存路径 +}; +#endif // Hd_AI_927_2D_module_H diff --git a/BaseModules/Hd_AI_empty_module/base.h b/BaseModules/Hd_AI_empty_module/base.h new file mode 100644 index 0000000..84d2f44 --- /dev/null +++ b/BaseModules/Hd_AI_empty_module/base.h @@ -0,0 +1,69 @@ +#ifndef __BASECLASS_H__ +#define __BASECLASS_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class Base :public QObject +{ + Q_OBJECT +public: + bool init_flag; //是否初始化,false,true + bool status = true; //相机状态(判断相机是否断开连接) + std::string paras; //传输数据 + std::vector m_mat; //传输图片 + std::string moduleName; //模块名称 +public: + Base(){} + virtual ~Base(){} + virtual bool readData(std::vector&,QByteArray&){return true;} + virtual bool writeData(std::vector&,QByteArray&){return true;} + virtual bool initParas(QByteArray&){return true;} + virtual bool run() {return true;} + virtual bool checkStatus() { return true; } + +//signals: + //QByteArrayList,根据实际项目进行解析;因不确定每个参数的长度,固用队列的方式。每个QByteArray表示一个值,使用时先转换为QString + //参数,例:返回结果图;相机关键字(SN或userID)+保存路径+缺陷信息列表(缺陷名称,缺陷位置int(x,y,w,h),画框颜色Scalar(a,b,c),缺陷面积double) + //void sendResultData(cv::Mat resMat, QJsonObject resQbj); +}; + +/* +//QJsonObject 转QByteArray +{ + QJsonDocument document; + QJsonObject obj; + obj.insert(password, "pwd"); + obj.insert(userName, "usr"); + document.setObject(obj); + QByteArray abyte = document.toJson(QJsonDocument::Compact); +} + +//QByteArray转QJsonObject +{ + QByteArray ba = reply->readAll(); + QJsonDocument doc = QJsonDocument::fromJson(ba); + QJsonObject obj = doc.object(); +} +*/ +/* +//从类中读数据到实例对象 +virtual bool readData(std::vector&,QByteArray&){return true;} + + + + + + + + +*/ + +#endif diff --git a/BaseModules/Hd_AI_seg_module/CMakeLists.txt b/BaseModules/Hd_AI_seg_module/CMakeLists.txt new file mode 100644 index 0000000..9dafdb5 --- /dev/null +++ b/BaseModules/Hd_AI_seg_module/CMakeLists.txt @@ -0,0 +1,70 @@ +# 获取获取当前目录名 +get_filename_component(CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} NAME) +string(TIMESTAMP RUN_TIME) +message( " model start : " ${CURRENT_FOLDER}:${RUN_TIME}) + +set(DLL_NAMES "opencv" "handdleAI3.0") +foreach(child ${DLL_NAMES}) + LIST(APPEND ENV_INCLUDE ${${child}_include}) + LIST(APPEND ENV_LIB ${${child}_lib}) + LIST(APPEND ENV_TARGET ${${child}_target_link}) +endforeach() +message(" ENV_INCLUDE : " ${ENV_INCLUDE} ) +message(" ENV_LIB : " ${ENV_LIB} ) +message(" ENV_TARGET : " ${ENV_TARGET} ) +include_directories( + + ${ENV_INCLUDE} + ) + +link_directories ( + ${ENV_LIB} + + ) + + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +SET(CMAKE_CXX_STANDARD 11) +SET(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_AUTOMOC ON) +SET(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) + +FILE(GLOB HEAD_FILES "./*.h" ) +FILE(GLOB SRC_FILES "./*.cpp") +FILE(GLOB UI_FILES "./*.ui") + + +#find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) + +add_library(${CURRENT_FOLDER} SHARED + ${HEAD_FILES} + ${SRC_FILES} + ${UI_FILES} + ) + + + +set_target_properties(${CURRENT_FOLDER} PROPERTIES LINKER_LANGUAGE C + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} + ) + + +target_link_libraries(${CURRENT_FOLDER} PRIVATE + ${ENV_TARGET} + Qt${QT_VERSION_MAJOR}::Core + ) + + +# target_compile_definitions(${CURRENT_FOLDER} PRIVATE HD_AIDEMO_MODULE_LIBRARY) + + + + +string(TIMESTAMP RUN_TIME) +message( " model end : " ${CURRENT_FOLDER}:${RUN_TIME}) diff --git a/BaseModules/Hd_AI_seg_module/Hd_AI_seg_module.cpp b/BaseModules/Hd_AI_seg_module/Hd_AI_seg_module.cpp new file mode 100644 index 0000000..9c104e0 --- /dev/null +++ b/BaseModules/Hd_AI_seg_module/Hd_AI_seg_module.cpp @@ -0,0 +1,918 @@ +#include "Hd_AI_seg_module.h" +#include + +#include +#include + + +#pragma execution_character_set("utf-8") +using namespace cv; +using namespace std; + +//原图保存文件夹 +static QString oriImgSaveDir = "F:/ORI/"; +//原图class图保存文件夹 +static QString classImgSaveDir = "F:/ORIclass/"; +//结果保存文件夹 +static QString resImgSaveDir = "F:/res/"; + +//切图的class的width,根据项目实际设置! +static int sizeW = 150; +//切图的class的height,根据项目实际设置! +static int sizeH = 150; +//切图的class的width,根据项目实际设置!0为黑,255为白; +static int fillColour = 0; + + +//检测线程锁 +static QMutex* detect_mutex; +//保存线程锁 +static QMutex* saveStruct_mutex; +//检测线程运行标志 +static bool ifdetectThread = false; + + +// 缺陷信息结构体 +typedef struct { + QString defectName = "";//缺陷名称 + cv::Rect defectRect = { 0,0,0,0 };//缺陷位置 + cv::Scalar defectScalar = cv::Scalar(0, 0, 0);//画框颜色 + double defectArea = 0;//缺陷真实面积 + double defectDepth = 0;//缺陷深度/高度,3D信息 +}defectInfo; + + + +//判断文件是否存在,不存在则创建 +bool isFileExist(QString fullFileName) +{ + QFileInfo fileInfo(fullFileName); + if (fileInfo.isFile()) + { + return true; + } + return false; +} + +void GetStringSize(HDC hdc, const char* str, int* w, int* h) +{ + SIZE size; + GetTextExtentPoint32A(hdc, str, strlen(str), &size); + if (w != 0) *w = size.cx; + if (h != 0) *h = size.cy; +} +//在图像写中文,英文也可以写 +void putTextZH(cv::Mat& dst, const char* str, cv::Point org, cv::Scalar color, int fontsize, + const char* fn = "Arial", bool italic = false, bool underline = false) +{ + CV_Assert(dst.data != 0 && (dst.channels() == 1 || dst.channels() == 3)); + + + int x, y, r, b; + //坐标点大于图像宽和高直接返回 + if (org.x > dst.cols || org.y > dst.rows) return; + x = org.x < 0 ? -org.x : 0; + y = org.y < 0 ? -org.y : 0; + + + LOGFONTA lf; + lf.lfHeight = -fontsize; //字体高度 + lf.lfWidth = 0; //平均宽度 + lf.lfEscapement = 0; //字符排列角度 + lf.lfOrientation = 0; //字符本身旋转的角度 + lf.lfWeight = 5; //设置字体线条的宽度 + lf.lfItalic = italic; //斜体 + lf.lfUnderline = underline; //下划线 + lf.lfStrikeOut = 0; //是否字符中央加横线 + lf.lfCharSet = DEFAULT_CHARSET; //字符集 + lf.lfOutPrecision = 0; //字体的精确度 + lf.lfQuality = PROOF_QUALITY; //字体质量 + lf.lfPitchAndFamily = 0; //选择字体的间距和字体家族 + strcpy_s(lf.lfFaceName, fn); //字体的名称 + + + HFONT hf = CreateFontIndirectA(&lf); + HDC hdc = CreateCompatibleDC(0); + HFONT holdfont = (HFONT)SelectObject(hdc, hf); + + + int strBaseW = 0, strBaseH = 0; + int singleRow = 0; + char buf[1 << 12]; + strcpy_s(buf, str); + char* bufT[1 << 12]; //这个用于分隔字符串后剩余的字符,可能会超出。 + + + //处理多行 + { + int nnh = 0; + int cw, ch; + + + const char* ln = strtok_s(buf, "\n", bufT); + while (ln != 0) + { + GetStringSize(hdc, ln, &cw, &ch); + strBaseW = max(strBaseW, cw); + strBaseH = max(strBaseH, ch); + + + ln = strtok_s(0, "\n", bufT); + nnh++; + } + singleRow = strBaseH; + strBaseH *= nnh; + } + + + if (org.x + strBaseW < 0 || org.y + strBaseH < 0) + { + SelectObject(hdc, holdfont); + DeleteObject(hf); + DeleteObject(hdc); + return; + } + + + r = org.x + strBaseW > dst.cols ? dst.cols - org.x - 1 : strBaseW - 1; + b = org.y + strBaseH > dst.rows ? dst.rows - org.y - 1 : strBaseH - 1; + org.x = org.x < 0 ? 0 : org.x; + org.y = org.y < 0 ? 0 : org.y; + + + BITMAPINFO bmp = { 0 }; + BITMAPINFOHEADER& bih = bmp.bmiHeader; + int strDrawLineStep = strBaseW * 3 % 4 == 0 ? strBaseW * 3 : (strBaseW * 3 + 4 - ((strBaseW * 3) % 4)); + + + bih.biSize = sizeof(BITMAPINFOHEADER); + bih.biWidth = strBaseW; + bih.biHeight = strBaseH; + bih.biPlanes = 1; + bih.biBitCount = 24; + bih.biCompression = BI_RGB; + bih.biSizeImage = strBaseH * strDrawLineStep; + bih.biClrUsed = 0; + bih.biClrImportant = 0; + + + void* pDibData = 0; + HBITMAP hBmp = CreateDIBSection(hdc, &bmp, DIB_RGB_COLORS, &pDibData, 0, 0); + + + CV_Assert(pDibData != 0); + HBITMAP hOldBmp = (HBITMAP)SelectObject(hdc, hBmp); + + + //color.val[2], color.val[1], color.val[0] + SetTextColor(hdc, RGB(255, 255, 255)); + SetBkColor(hdc, 0); + //SetStretchBltMode(hDC, COLORONCOLOR); + + + strcpy_s(buf, str); + const char* ln = strtok_s(buf, "\n", bufT); + int outTextY = 0; + while (ln != 0) + { + TextOutA(hdc, 0, outTextY, ln, strlen(ln)); + outTextY += singleRow; + ln = strtok_s(0, "\n", bufT); + } + uchar* dstData = (uchar*)dst.data; + int dstStep = dst.step / sizeof(dstData[0]); + unsigned char* pImg = (unsigned char*)dst.data + org.x * dst.channels() + org.y * dstStep; + unsigned char* pStr = (unsigned char*)pDibData + x * 3; + for (int tty = y; tty <= b; ++tty) + { + unsigned char* subImg = pImg + (tty - y) * dstStep; + unsigned char* subStr = pStr + (strBaseH - tty - 1) * strDrawLineStep; + for (int ttx = x; ttx <= r; ++ttx) + { + for (int n = 0; n < dst.channels(); ++n) { + double vtxt = subStr[n] / 255.0; + int cvv = vtxt * color.val[n] + (1 - vtxt) * subImg[n]; + subImg[n] = cvv > 255 ? 255 : (cvv < 0 ? 0 : cvv); + } + + + subStr += 3; + subImg += dst.channels(); + } + } + + + SelectObject(hdc, hOldBmp); + SelectObject(hdc, holdfont); + DeleteObject(hf); + DeleteObject(hBmp); + DeleteDC(hdc); +} + +void drawDefects(cv::Mat& sourceMat, QQueue defectInfoList) +{ + for (int i = 0; i < defectInfoList.size(); i++) + { + defectInfo mdefect = defectInfoList[i]; + + cv::rectangle(sourceMat, cv::Point(mdefect.defectRect.x, mdefect.defectRect.y), + cv::Point(mdefect.defectRect.x + mdefect.defectRect.width, mdefect.defectRect.y + mdefect.defectRect.height), mdefect.defectScalar, 3, 8); + + QByteArray path_arr = mdefect.defectName.toLocal8Bit(); + const char* path = path_arr.data(); + putTextZH(sourceMat, path, cv::Point(mdefect.defectRect.x, mdefect.defectRect.y - 50), mdefect.defectScalar, 50, "微软雅黑"); + } +} + + + +//判断文件夹是否存在,不存在则创建 +void Hd_AI_seg_module::isDirExist(QString fullDirName) +{ + QDir* photo = new QDir; + bool exist = photo->exists(fullDirName); + if (exist) + { + //qDebug() << fullDirName << "::已存在"; + } + else + { + //创建photo文件夹 + //qDebug() << fullDirName << "::不存在,创建"; + photo->mkdir(fullDirName); + } + delete photo; + photo = nullptr; +} + +Hd_AI_seg_module* create() +{ + qDebug() << "[INFO] " << " Hd_AI_seg_module create success!" ; + return new Hd_AI_seg_module; +} + +void destory(Hd_AI_seg_module* ptr) +{ + qDebug() << "[INFO] " << "Hd_AI_seg_module destory success!"; + if(ptr) + { + delete ptr; + ptr = nullptr; + } +} + +Hd_AI_seg_module::Hd_AI_seg_module() +{ + detect_mutex = new QMutex; + saveStruct_mutex = new QMutex; + ifdetectThread = false; +} + +Hd_AI_seg_module::~Hd_AI_seg_module() +{ + ifdetectThread = false; + Sleep(10); + if (detect_mutex) + { + delete detect_mutex; + detect_mutex = nullptr; + } + if (saveStruct_mutex) + { + delete saveStruct_mutex; + saveStruct_mutex = nullptr; + } + /*DestroySegObj(pSeg); + DestroyClsObj(pCls);*/ +} +static int defectNums = 0; +//static cv::Mat resMat; +//从类中读数据到实例对象 +bool Hd_AI_seg_module::readData(std::vector&vec_mat,QByteArray &data) +{ + detect_mutex->lock(); + //qDebug() << __FUNCTION__ << " line:" <<__LINE__ << " data len:" << data.length(); + if (resMat.size()>0) + { + vec_mat.push_back(resMat[0]); + resMat.clear(); + } + else + { + vec_mat.push_back(HikMat[0]); + //qDebug() << __FUNCTION__ << " line:" << __LINE__ << " resMat.data err:"; + } + //if (allNum++ % 21 == 20) + // data = "2";// resByte.dequeue(); + //else + if (defectNums == 0) + data = "1";//1OK,2NG + else + data = "2"; + resByte.clear(); + ////之后根据结果类修改 + //if(resIfNg == true) + // data = "NG"; + //else data = "OK"; + detect_mutex->unlock(); + return true; +} +//从类中读数据到实例对象 +bool Hd_AI_seg_module::encodeResultValue(QVector append_value,QByteArray &resultByte) +{ + try + { + std::string sendMsg; + for(int i = 0 ; i < append_value.size();i++) + { + std::string value = append_value.at(1); + //type + int type = 3; + std::string m_type; + m_type.insert(0,4,'1'); + memcpy ( (void*)m_type.c_str(),(void*)&type,4 ); + sendMsg.append(m_type); + + //len + int len = value.length(); + std::string m_len; + m_len.insert(0,4,'1'); + memcpy ( (void*)m_len.c_str(),(void*)&len,4 ); + sendMsg.append(m_len); + + //data x + sendMsg.append(value); + } + resultByte = QByteArray::fromStdString(sendMsg); + } catch (QString ev) + { + qCritical() << "[Error] " << " ev:" << ev; + return false; + } + return true; +} +//接收数据 +bool Hd_AI_seg_module::writeData(std::vector& vec_mat, QByteArray &data) +{ + //qDebug() << __FUNCTION__ << "line:"<< __LINE__ << " data len" << data.length() ; + if(vec_mat.empty()) + { + qCritical() << "[Error] " << " vec_mat is null !"; + return false; + } + detect_mutex->lock(); + HikMat.clear(); + HikMat.enqueue(vec_mat[0]); + //测试相机的, + //while (HikMat[0].cols > 2000)cv::resize(HikMat[0], HikMat[0], cv::Size(), 0.1, 0.1); + //or检测:保存路径,拍照面描述,相机key_第几张图,SN_时间戳 + //and检测:保存路径,拍照面描述,相机key_第几张图,相机key_第几张图,SN_时间戳,SN_时间戳 + //汇总:保存路径,拍照面描述,触发信号_序号列表0,SN_时间戳 + QString qstring_data = data; + QStringList datalist = qstring_data.split(','); + + + /*saveKey.enqueue("datalist[0]"); + Dir2D.enqueue("datalist[1]"); + QStringList SN_dataTime; + SN_dataTime = datalist[3].split('_'); + DateTime1 = "SN_dataTime[1]"; + SN.enqueue("SN_dataTime[0]");*/ + //qCritical() << __FUNCTION__ << " line: " << __LINE__ << " data:" << qstring_data; + detect_mutex->unlock(); + + //cv::Mat resultDstImg = vec_mat[0].clone();// = pSeg->Evaluate(sourceImg); //返回单通道二值图 图片错误输出Image Error!但不报错。。 + //resultDstImg = pSeg->Evaluate(resultDstImg); + //resultDstImg.release(); + + return true; +} +//初始化 +bool Hd_AI_seg_module::initParas(QByteArray& byteArray) +{ + //if(byteArray.isEmpty()) + //{ + // qCritical() << "[Error] " << " byteArray is null!"; + // return false; + //} + //QVector vec_ret; + + //decodeAiValue(byteArray,vec_ret); + //if(vec_ret.isEmpty()) + //{ + // qCritical() << "[Error] " << " vec_ret is null!"; + // return false; + //} + + ///*pSeg = CreateSegObjS(pSeg_modulePath, 128, gpuId); + //pCls = CreateClsObjV3(pCls_modulePath, gpuId, 1);*/ + + + //StationNo = vec_ret.at(0).toInt(); + + ////InitThreads(StationNo, img2D); + ////InitModels(StationNo, img2D); + + ////运行检测线程 + //ifdetectThread = true; + + ////线程检测:结果类完成时,使用 + ////ifThreadRunDetect = true; + ////QFuture future1 = QtConcurrent::run(this, &Hd_AI_seg_module::detectThread); + ////运行存图线程 + //QFuture future2 = QtConcurrent::run(this, &Hd_AI_seg_module::saveImgThread); + ////detectThread(); + + ////原图总文件夹 + //isDirExist(oriImgSaveDir); + ////原图class总文件夹 + //isDirExist(classImgSaveDir); + ////结果图总文件夹 + //isDirExist(resImgSaveDir); + + + wstring taskPath = L"task\\haiwai_demo_model1\\haiwai_demo_model1.task"; + wcout.imbue(locale("zh_CN")); + + //bool ret = instance(taskPath, 0); + //if (!ret) + //{ + // //销毁实例 + // destroyInstance(); + // cout << "run task false\n"; + // return false; + //} + //vector srcMats; + //vector results; + ////传入图片vector 和 接收结果的容器 + //ret = PBTASK_EXPORT::run(srcMats, results);//初始化一下AI模型 + + //qDebug() << "[INFO] " << " StationNo:" << StationNo << " img2D:" << img2D ; + return true; +} +// 解码 +bool Hd_AI_seg_module::decodeAiValue(QByteArray byteArray,QVector &vec_ret) +{ + if(byteArray.isEmpty()) + { + qCritical() << "[Error] " << " byteArray is null!"; + return false; + } + + /*******************************************/ + byteArray.remove(0,8); + QByteArray mm_data = byteArray.mid(0,4); + memcpy((void*)¶mNum,(void*)mm_data.data(), 4); + qDebug() << "[INFO] " << " paramNum:" << paramNum; + byteArray.remove(0,4); + /*******************************************/ + + while (!byteArray.isEmpty()) + { + int type = 0; + QByteArray m_type = byteArray.mid(0,4); + memcpy((void*)&type,(void*)m_type.data(), 4); + byteArray.remove(0,4); + + int len = 0; + QByteArray m_len = byteArray.mid(0,4); + memcpy((void*)&len,(void*)m_len.data(), 4); + byteArray.remove(0,4); + + QByteArray mm_data = byteArray.mid(0,len); + vec_ret.append(mm_data); + byteArray.remove(0,len); + } + return true; +} + +//---------检测流程,根据实际项目修改--------- +bool Hd_AI_seg_module::AIdetect(cv::Mat img2D, QString mysaveKey, QString myDir2D, QString mySN, QString myDataTime) +{ + try + { + //存图数据加保存队列,加锁,避免数据访问冲突 + saveStruct_mutex->lock(); + saveImgStruct mySave; + Mat sourceImg; + sourceImg = img2D.clone(); + //img2D.copyTo(sourceImg); + //img2D.release(); + QString mysaveKey1 = mysaveKey; //"offlineStation1_off_1" + saveStruct_mutex->unlock(); + + QJsonDocument document; + QJsonObject obj; + obj.insert("result_key", "mysaveKey"); + obj.insert("SN", "mySN"); + obj.insert("DataTime", "myDataTime"); + + + //QFile csvName("test.csv"); + //QStringList lines; + //lines << "class,name\n" << "3,4,5,6,7\n" << "a,b,c,d\n"; + //if (csvName.open(QIODevice::WriteOnly)) //若文件不存在,会自动创建 + //{ + // for (int i = 0; i < lines.size(); i++) + // csvName.write(lines[i].toStdString().c_str()); + // csvName.close(); + //} + + QQueue defectInfoList; + + //seg后class检测逻辑 + /*if (0) { + Mat sourceRectangles;// 在原图缺陷位置,边界矩形框出 + sourceRectangles = sourceImg.clone(); + //sourceImg.copyTo(sourceRectangles); + vector> contours; + + //seg检测 + Mat resultDstImg;// = sourceImg.clone();// = pSeg->Evaluate(sourceImg); //返回单通道二值图 图片错误输出Image Error!但不报错。。 + resultDstImg = pSeg->Evaluate(sourceImg); + //int resultClass = pCls->Evaluate(sourceImg); //类别id + + //opencv对二值图进行处理 + //GaussianBlur(resultDstImg, resultDstImg, Size(3, 3), 1); //缺陷过滤值较大时,可以减少检出数;缺陷较小时,漏检较多 + threshold(resultDstImg, resultDstImg, pSeg->m_classes, 255, THRESH_BINARY_INV);//大于部分设为0,小于部分设为255 + //findContours(resultDstImg, contours, cv::noArray(), cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE); //不识别内部轮廓,有些情况抓到的图像外框? + findContours(resultDstImg, contours, cv::noArray(), cv::RETR_TREE, cv::CHAIN_APPROX_NONE); //需要内部轮廓的写法 + + if (contours.size() == 0) + { + //printf("Notlabeled\n"); + } + else + { + for (int j = 0; j < contours.size(); j++) + { + Rect rect1 = boundingRect(Mat(contours[j])); + + //最小缺陷过滤参数,根据项目实际设置! + int filterNum = 10; + float w = rect1.width * 1.0; + float h = rect1.height * 1.0; + if ((w / sourceImg.cols > 0.98) || (h / sourceImg.rows > 0.98)) + { + //抓到图像外框了 + //qDebug() << "NG is too big..."; + continue; + } + //且逻辑,有的项目需要或逻辑!! + if ((w > filterNum && h > filterNum))//||rect1.area> filterNum*filterNum*1.5) + { + //class检测mat + Mat imgCls; + + //此段为切图逻辑为: + //缺陷外扩5像素; + //判断最大边,大于class建网大小的,按照最大边尺寸比例切大图,然后resize为建网大小;最大边小于等于建网大小的,按照建网大小切图; + //越界填充 + { + int startX = rect1.x - 5; + int startY = rect1.y - 5; + int endX = rect1.x + rect1.width + 5; + int endY = rect1.y + rect1.height + 5; + + //尺寸比例 + double maxscaler, scalerX, scalerY; + maxscaler = 1.0; + scalerX = (endX - startX) * 1.0 / sizeW;//*1.0转为float,避免被取整了 + scalerY = (endY - startY) * 1.0 / sizeH; + + maxscaler = max(maxscaler, max(scalerX, scalerY)); + + int avgX = (rect1.x + rect1.x + rect1.width) / 2; //中点X位置 + int avgY = (rect1.y + rect1.y + rect1.height) / 2;//中点Y位置 + + startX = avgX - int(maxscaler * sizeW / 2);//强转为int + endX = startX + int(maxscaler * sizeW); + startY = avgY - int(maxscaler * sizeH / 2); + endY = startY + int(maxscaler * sizeH); + + //判断是否越界,越界要填充的像素个数 + int copyTop = max(0, 0 - startY); + int copyButton = max(0, endY - sourceImg.rows); + int copyLeft = max(0, 0 - startX); + int copyRight = max(0, endX - sourceImg.cols); + + //切图不要越界,会崩溃 + Mat imgCut = sourceImg(Range(max(0, startY - copyTop), min(sourceImg.rows, endY - copyButton)), + Range(max(0, startX - copyLeft), min(sourceImg.cols, endX - copyRight))); //起始行,终止行;起始列,终止列 + + //图像扩充 + if (sourceImg.channels() == 1) + { + copyMakeBorder(imgCut, imgCut, copyTop, copyButton, copyLeft, copyRight, BORDER_CONSTANT, fillColour); + } + else + { + copyMakeBorder(imgCut, imgCut, copyTop, copyButton, copyLeft, copyRight, BORDER_CONSTANT, Scalar(fillColour, fillColour, fillColour)); + } + //resize为建网大小 + cv::resize(imgCut, imgCls, cv::Size(sizeW, sizeH)); + imgCut.release(); + } + + + int resultClass = 0; + float prob = 1.0; + + resultClass = pCls->Evaluate(imgCls); //类别id + prob = pCls->getProbability(); //可能性 + + //切图保存,按需 + { + isDirExist(classImgSaveDir + mysaveKey1 + "/class_" + QString::number(resultClass)); + //存图数据入队,按需 + addImgToSaveStruct(imgCls, mysaveKey1, classImgSaveDir + mysaveKey1 + "/class_" + QString::number(resultClass) + "/" + mySN + myDataTime + QString::number(j) + ".bmp"); + } + + //此处应添加缺陷计数逻辑 + + if (resultClass == 0)//OK + { + ; + } + else if (resultClass == 1)//划伤Scratch + { + resIfNg = true; + //rectangle(sourceRectangles, rect1.tl(), rect1.br(), Scalar(0, 0, 255), 3, 8); + ////可行,必须转一下格式 + //{ + // QString pathQstr = "划伤"; + // QByteArray path_arr = pathQstr.toLocal8Bit(); + // const char* path = path_arr.data(); + // putTextZH(sourceRectangles, path, cv::Point(rect1.tl().x, rect1.tl().y - 5), Scalar(255, 0, 0), 50, "微软雅黑"); + //} + + defectInfo mdefectInfo; + mdefectInfo.defectName = "划伤"; + mdefectInfo.defectRect = rect1; + mdefectInfo.defectArea = contourArea(contours[j]); + mdefectInfo.defectScalar = cv::Scalar(0, 0, 255); + defectInfoList.enqueue(mdefectInfo); + } + else if (resultClass == 2)//碰伤 + { + resIfNg = true; + defectInfo mdefectInfo; + mdefectInfo.defectName = "碰伤"; + mdefectInfo.defectRect = rect1; + mdefectInfo.defectArea = contourArea(contours[j]); + mdefectInfo.defectScalar = cv::Scalar(0, 255, 255); + defectInfoList.enqueue(mdefectInfo); + } + imgCls.release(); + } + else { + //cout << "ng is too small<" << filterNum << endl; + continue; + } + } + } + //cv::Mat resMat = img2D.clone(); + sourceRectangles.release(); + contours.resize(0); + resultDstImg.release(); + } + */ + + detect_mutex->lock(); + //resMat = sourceImg.clone(); + //sourceImg.copyTo(resMat); + resMat.push_back(sourceImg); + //结果图画框和缺陷,在resMat上绘制 + if (resMat.size() > 0) + drawDefects(resMat[0], defectInfoList); + + //QByteArray,根据实际项目进行解析 + //参数,例:返回结果图;相机关键字(SN或userID)+保存路径+缺陷信息列表(缺陷名称,缺陷位置int(x,y,w,h),画框颜色Scalar(a,b,c),缺陷面积double) + + QJsonArray detaillists; + //QByteArrayList resQbyte; + for (int i = 0; i < defectInfoList.size(); i++) + { + defectInfo mdefect = defectInfoList[i]; + //resQbyte.push_back(mdefect.defectName.toLocal8Bit()); //中文也可以QString::number(1.1).toUtf8() + //resQbyte.push_back(QString::number(mdefect.defectRect.x).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.y).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.width).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.height).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[0]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[1]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[2]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectArea).toUtf8()); + QJsonObject detailObj; + detailObj.insert("defectName", "mdefect.defectName"); + detailObj.insert("defectRect.x", QString::number(mdefect.defectRect.x)); + detailObj.insert("defectRect.y", QString::number(mdefect.defectRect.y)); + detailObj.insert("defectRect.width", QString::number(mdefect.defectRect.width)); + detailObj.insert("defectRect.height", QString::number(mdefect.defectRect.height)); + detailObj.insert("defectScalar0", QString::number(mdefect.defectScalar[0])); + detailObj.insert("defectScalar1", QString::number(mdefect.defectScalar[1])); + detailObj.insert("defectScalar2", QString::number(mdefect.defectScalar[2])); + detailObj.insert("defectArea", QString::number(mdefect.defectArea)); + detailObj.insert("defectLength", QString::number(sqrt(mdefect.defectRect.width* mdefect.defectRect.width+ mdefect.defectRect.height* mdefect.defectRect.height))); + + detaillists.append(detailObj); + } + + + //使用完删除 + defectInfoList.clear(); + + //往主界面发 + //emit sendResultData(resMat, resQbyte); + //resQbyte.clear(); + + isDirExist(resImgSaveDir + mysaveKey1 + "/"); + QString qimgsavePath = resImgSaveDir + mysaveKey1 + "/" + mySN + myDataTime + ".png"; + //存图数据入队,按需 + if (resMat.size() > 0 ) + addImgToSaveStruct(resMat[0], mysaveKey1, resImgSaveDir + mysaveKey1 + "/" + mySN + myDataTime + ".png"); + detect_mutex->unlock(); + + obj.insert("detaillists", detaillists); + obj.insert("qimgsavePath", qimgsavePath); + document.setObject(obj); + //resByte.clear(); + QByteArray qa = document.toJson(); + //resByte .enqueue(qa); + + + //resMat.release(); + sourceImg.release(); + + mySave.out_Mat.resize(0); + mysaveKey1.clear(); + qApp->processEvents(); + + + ////原图和结果都往主界面发? + //std::vector resMat; + //resMat.push_back(img2D); + //resMat.push_back(sourceRectangles); + //QByteArray resByte = mysaveKey.toLocal8Bit(); + //resByte.append(myDir2D.toLocal8Bit()); + //resByte.append(mySN.toLocal8Bit()); + //resByte.append(myDataTime.toLocal8Bit()); + + ////往主界面发送图片和数据 + ////emit writeData(resMat, resByte); + //resMat.resize(0); + //resByte.resize(0); + } + catch (...) + { + qDebug() << "[Error] " << QString::fromUtf8("检测失败!"); + return false; + } + return true; + +} + +//存图加入队列 +void Hd_AI_seg_module::addImgToSaveStruct(cv::Mat img2D, QString mysaveKey, QString savePath) +{ + //存图数据加保存队列,加锁,避免数据访问冲突 + saveStruct_mutex->lock(); + saveImgStruct mySave; + mySave.out_Mat = img2D.clone(); + //img2D.copyTo(mySave.out_Mat); + mySave.saveKey = (mysaveKey).toStdString(); + mySave.savePath = (savePath).toStdString(); + saveStruct.enqueue(mySave); + saveStruct_mutex->unlock(); +} +void Hd_AI_seg_module::saveImgThread() +{ + while (1) + { + if (!ifdetectThread)return; + _sleep(1); + qApp->processEvents(); + if (saveStruct.size() < 1)continue; + for (int i = 0; i < saveStruct.size(); i++) + { + saveStruct_mutex->lock(); + saveImgStruct mysaveStruct = saveStruct.dequeue(); + saveStruct_mutex->unlock(); + //if (mysaveStruct.out_Mat.data)imwrite(mysaveStruct.savePath, mysaveStruct.out_Mat); + //std::cout << "savePath::" << mysaveStruct.savePath << std::endl; + _sleep(1); + } + } +} +//检测线程,应当只运行一次 +void Hd_AI_seg_module::detectThread() +{ + do + { + if (!ifdetectThread)return; + + //此两行代码,避免程序卡死;_sleep的时间根据实际项目调整 + _sleep(2); + qApp->processEvents(); + //取数据加锁,避免数据访问冲突 + detect_mutex->lock(); + //if (HikMat.size() < 1 || saveKey.size() < 1 || Dir2D.size() < 1 || SN.size() < 1 )//|| DateTime1.size() < 1) + //{ + // detect_mutex->unlock(); + // continue; + //} + + cv::Mat sourceImg1 = HikMat[0];// .dequeue(); + QString mysaveKey = "saveKey";// .dequeue(); + QString myDir2D = "Dir2D";// .dequeue(); + QString mySN = "SN";// .dequeue(); + QString myDataTime = "DateTime1"; + detect_mutex->unlock(); + + //判断存图文件夹是否存在,不存在则创建 + { + //原图总文件夹 + isDirExist(oriImgSaveDir + mysaveKey); + //原图class总文件夹 + isDirExist(classImgSaveDir + mysaveKey); + //结果图总文件夹 + isDirExist(resImgSaveDir + mysaveKey); + + } + + //测试相机的, + while (sourceImg1.cols > 2000)cv::resize(sourceImg1, sourceImg1, cv::Size(), 0.5, 0.5); + + //存图数据入队 + //addImgToSaveStruct(sourceImg1, mysaveKey, oriImgSaveDir + mysaveKey + "/" + mySN + myDataTime + ".bmp"); + + //-------检测流程,根据实际项目修改--------- + AIdetect(sourceImg1, mysaveKey, oriImgSaveDir, mySN, myDataTime); + //sourceImg1.release(); + + mysaveKey.clear(); + myDir2D.clear(); + mySN.clear(); + myDataTime.clear(); + qApp->processEvents(); + + } while (ifThreadRunDetect); + +} + + +bool myMath(double a, double b) +{ + return a > b; +} + +static int runNum = 0; +QQueue timeAll_A; +QQueue timeAll_B; +bool Hd_AI_seg_module::run() +{ + defectNums = 0; + vector srcMats; + + clock_t start = 0; + clock_t stop = 0; + double time = 0; + + //cv::Mat mat; + float prob = 0; + + if (HikMat.isEmpty()) + return false; + srcMats.push_back(HikMat[0]); + + start = clock(); + + + + stop = clock(); + time = stop - start; + timeAll_B.enqueue(time); + start = clock(); + + qSort(timeAll_A.begin(), timeAll_A.end(), myMath); + qSort(timeAll_B.begin(), timeAll_B.end(), myMath); + + timeAll_A.rend(); + timeAll_B.rend(); + + //Sleep(50); + //detectThread(); + //stop = clock(); + //qDebug() << __FUNCTION__ << "line:" << __LINE__ << " run start ::runNum::" << runNum++<<" cutTime::"< +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "imgproc/imgproc_c.h" + +#include "base.h" + + +#pragma execution_character_set("utf-8") + + + +//保存图片的结构体 +struct saveImgStruct; +//{ +// cv::Mat out_Mat; +// std::string saveKey; //关键字,用于LOG日志 +// std::string savePath; //保存路径 +//}; + +//初始化流程(一次):Hd_AI_seg_module,initParas +//运行流程:writeData主线程把数据传过来,run,readData此线程把数据传主线程 +class Hd_AI_seg_module :public Base +{ + Q_OBJECT +public: + Hd_AI_seg_module(); + virtual ~Hd_AI_seg_module(); + //从类中读数据到实例对象 + bool readData(std::vector&,QByteArray&); + //实例对象把数据写入到类 + bool writeData(std::vector&, QByteArray&); + bool initParas(QByteArray&); + //运行(Logic_taskthread.cpp) + bool run(); + //线程状态 + bool checkStatus();// { return true; }; + + bool encodeResultValue(QVector append_value,QByteArray &resultByte); + bool decodeAiValue(QByteArray byteArray,QVector &vec_ret); + //---------检测流程,根据实际项目修改--------- + bool AIdetect(cv::Mat img2D, QString saveKey, QString Dir2D, QString SN, QString DataTime); + + + +private: + + int allNum = 0; + int StationNo; + int img2D = 2; + + bool moduleStatus = true; + + //输入图片队列 + QQueue HikMat; + //输入关键字队列 + QString saveKey="saveKey"; + //结果路径文件夹队列 + QString Dir2D="Dir2D"; + //产品SN队列 + QString SN="SN"; + //产品时间戳队列 + QString DateTime1="DateTime1"; + + int paramNum; + + //是否使用线程检测方式 + bool ifThreadRunDetect = false; + //检测结果图 + std::vector resMat; + //检测结果 + bool resIfNg = false; + + QQueue resByte; + + //检测线程 + void detectThread(); + //存图线程 + void saveImgThread(); + + //保存图片队列 + QQueue saveStruct; + + //判断文件夹是否存在,不存在则创建 + void isDirExist(QString fullDirName); + + //存图加入队列 + void addImgToSaveStruct(cv::Mat img2D, QString saveKey, QString savePath); +}; + +extern "C" +{ + Q_DECL_EXPORT Hd_AI_seg_module * create(); + Q_DECL_EXPORT void destory(Hd_AI_seg_module * ptr); +} +//保存图片的结构体 +struct saveImgStruct +{ + cv::Mat out_Mat; + std::string saveKey; //关键字,用于LOG日志 + std::string savePath; //保存路径 +}; +#endif // Hd_AI_927_2D_module_H diff --git a/BaseModules/Hd_AI_seg_module/base.h b/BaseModules/Hd_AI_seg_module/base.h new file mode 100644 index 0000000..84d2f44 --- /dev/null +++ b/BaseModules/Hd_AI_seg_module/base.h @@ -0,0 +1,69 @@ +#ifndef __BASECLASS_H__ +#define __BASECLASS_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class Base :public QObject +{ + Q_OBJECT +public: + bool init_flag; //是否初始化,false,true + bool status = true; //相机状态(判断相机是否断开连接) + std::string paras; //传输数据 + std::vector m_mat; //传输图片 + std::string moduleName; //模块名称 +public: + Base(){} + virtual ~Base(){} + virtual bool readData(std::vector&,QByteArray&){return true;} + virtual bool writeData(std::vector&,QByteArray&){return true;} + virtual bool initParas(QByteArray&){return true;} + virtual bool run() {return true;} + virtual bool checkStatus() { return true; } + +//signals: + //QByteArrayList,根据实际项目进行解析;因不确定每个参数的长度,固用队列的方式。每个QByteArray表示一个值,使用时先转换为QString + //参数,例:返回结果图;相机关键字(SN或userID)+保存路径+缺陷信息列表(缺陷名称,缺陷位置int(x,y,w,h),画框颜色Scalar(a,b,c),缺陷面积double) + //void sendResultData(cv::Mat resMat, QJsonObject resQbj); +}; + +/* +//QJsonObject 转QByteArray +{ + QJsonDocument document; + QJsonObject obj; + obj.insert(password, "pwd"); + obj.insert(userName, "usr"); + document.setObject(obj); + QByteArray abyte = document.toJson(QJsonDocument::Compact); +} + +//QByteArray转QJsonObject +{ + QByteArray ba = reply->readAll(); + QJsonDocument doc = QJsonDocument::fromJson(ba); + QJsonObject obj = doc.object(); +} +*/ +/* +//从类中读数据到实例对象 +virtual bool readData(std::vector&,QByteArray&){return true;} + + + + + + + + +*/ + +#endif diff --git a/BaseModules/Hd_AI_tmp_module_savImg/CMakeLists.txt b/BaseModules/Hd_AI_tmp_module_savImg/CMakeLists.txt new file mode 100644 index 0000000..06f29aa --- /dev/null +++ b/BaseModules/Hd_AI_tmp_module_savImg/CMakeLists.txt @@ -0,0 +1,70 @@ +# 获取获取当前目录名 +get_filename_component(CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} NAME) +string(TIMESTAMP RUN_TIME) +message( " model start : " ${CURRENT_FOLDER}:${RUN_TIME}) + +set(DLL_NAMES "opencv" "halcon") +foreach(child ${DLL_NAMES}) + LIST(APPEND ENV_INCLUDE ${${child}_include}) + LIST(APPEND ENV_LIB ${${child}_lib}) + LIST(APPEND ENV_TARGET ${${child}_target_link}) +endforeach() +message(" ENV_INCLUDE : " ${ENV_INCLUDE} ) +message(" ENV_LIB : " ${ENV_LIB} ) +message(" ENV_TARGET : " ${ENV_TARGET} ) +include_directories( + + ${ENV_INCLUDE} + ) + +link_directories ( + ${ENV_LIB} + + ) + + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +SET(CMAKE_CXX_STANDARD 11) +SET(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_AUTOMOC ON) +SET(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) + +FILE(GLOB HEAD_FILES "./*.h" ) +FILE(GLOB SRC_FILES "./*.cpp") +FILE(GLOB UI_FILES "./*.ui") + + +#find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) + +add_library(${CURRENT_FOLDER} SHARED + ${HEAD_FILES} + ${SRC_FILES} + ${UI_FILES} + ) + + + +set_target_properties(${CURRENT_FOLDER} PROPERTIES LINKER_LANGUAGE C + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} + ) + + +target_link_libraries(${CURRENT_FOLDER} PRIVATE + ${ENV_TARGET} + Qt${QT_VERSION_MAJOR}::Core + ) + + +# target_compile_definitions(${CURRENT_FOLDER} PRIVATE HD_AIDEMO_MODULE_LIBRARY) + + + + +string(TIMESTAMP RUN_TIME) +message( " model end : " ${CURRENT_FOLDER}:${RUN_TIME}) diff --git a/BaseModules/Hd_AI_tmp_module_savImg/Hd_AI_tmp_module_savImg.cpp b/BaseModules/Hd_AI_tmp_module_savImg/Hd_AI_tmp_module_savImg.cpp new file mode 100644 index 0000000..b070c61 --- /dev/null +++ b/BaseModules/Hd_AI_tmp_module_savImg/Hd_AI_tmp_module_savImg.cpp @@ -0,0 +1,1010 @@ +#include "Hd_AI_tmp_module_savImg.h" +#include + +#include +#include + +#include +using namespace cv; + +//原图保存文件夹 需要手动设置 + QString oriImgSaveDir = "D:/601线/超声波终焊01号机/极性检测/"; +//原图class图保存文件夹 需要手动设置 + QString classImgSaveDir = "F:/ORIclass/"; +//结果保存文件夹 需要手动设置 + QString resImgSaveDir = "F:/res/"; + +//切图的class的width,根据项目实际设置! + int sizeW = 150; +//切图的class的height,根据项目实际设置! + int sizeH = 150; +//切图的class的width,根据项目实际设置!0为黑,255为白; + int fillColour = 0; + + +//检测线程锁 + QMutex* detect_mutex; +//保存线程锁 + QMutex* saveStruct_mutex; +//检测线程运行标志 + bool ifdetectThread = false; + + QString cameraKey_index = ""; + + //初始化参数列表 + QByteArrayList initValueList; + + QString byteArrayToUnicode(const QByteArray array) { + + // state用于保存转换状态,它的成员invalidChars,可用来判断是否转换成功 + // 如果转换成功,则值为0,如果值大于0,则说明转换失败 + QTextCodec::ConverterState state; + // 先尝试使用utf-8的方式把QByteArray转换成QString + QString text = QTextCodec::codecForName("UTF-8")->toUnicode(array.constData(), array.size(), &state); + // 如果转换时无效字符数量大于0,说明编码格式不对 + if (state.invalidChars > 0) + { + // 再尝试使用GBK的方式进行转换,一般就能转换正确(当然也可能是其它格式,但比较少见了) + text = QTextCodec::codecForName("GBK")->toUnicode(array); + } + return text; + } + + +// 缺陷信息结构体 +typedef struct { + QString defectName = "";//缺陷名称 + cv::Rect defectRect = { 0,0,0,0 };//缺陷位置 + cv::Scalar defectScalar = cv::Scalar(0, 0, 0);//画框颜色 + double defectArea = 0;//缺陷真实面积 + double defectDepth = 0;//缺陷深度/高度,3D信息 +}defectInfo; + + + +//判断文件是否存在,不存在则创建 +bool isFileExist(QString fullFileName) +{ + QFileInfo fileInfo(fullFileName); + if (fileInfo.isFile()) + { + return true; + } + return false; +} + +void GetStringSize(HDC hdc, const char* str, int* w, int* h) +{ + SIZE size; + GetTextExtentPoint32A(hdc, str, strlen(str), &size); + if (w != 0) *w = size.cx; + if (h != 0) *h = size.cy; +} +//在图像写中文,英文也可以写 +void putTextZH(cv::Mat& dst, const char* str, cv::Point org, cv::Scalar color, int fontsize, + const char* fn = "Arial", bool italic = false, bool underline = false) +{ + CV_Assert(dst.data != 0 && (dst.channels() == 1 || dst.channels() == 3)); + + + int x, y, r, b; + //坐标点大于图像宽和高直接返回 + if (org.x > dst.cols || org.y > dst.rows) return; + x = org.x < 0 ? -org.x : 0; + y = org.y < 0 ? -org.y : 0; + + + LOGFONTA lf; + lf.lfHeight = -fontsize; //字体高度 + lf.lfWidth = 0; //平均宽度 + lf.lfEscapement = 0; //字符排列角度 + lf.lfOrientation = 0; //字符本身旋转的角度 + lf.lfWeight = 5; //设置字体线条的宽度 + lf.lfItalic = italic; //斜体 + lf.lfUnderline = underline; //下划线 + lf.lfStrikeOut = 0; //是否字符中央加横线 + lf.lfCharSet = DEFAULT_CHARSET; //字符集 + lf.lfOutPrecision = 0; //字体的精确度 + lf.lfQuality = PROOF_QUALITY; //字体质量 + lf.lfPitchAndFamily = 0; //选择字体的间距和字体家族 + strcpy_s(lf.lfFaceName, fn); //字体的名称 + + + HFONT hf = CreateFontIndirectA(&lf); + HDC hdc = CreateCompatibleDC(0); + HFONT holdfont = (HFONT)SelectObject(hdc, hf); + + + int strBaseW = 0, strBaseH = 0; + int singleRow = 0; + char buf[1 << 12]; + strcpy_s(buf, str); + char* bufT[1 << 12]; //这个用于分隔字符串后剩余的字符,可能会超出。 + + + //处理多行 + { + int nnh = 0; + int cw, ch; + + + const char* ln = strtok_s(buf, "\n", bufT); + while (ln != 0) + { + GetStringSize(hdc, ln, &cw, &ch); + strBaseW = max(strBaseW, cw); + strBaseH = max(strBaseH, ch); + + + ln = strtok_s(0, "\n", bufT); + nnh++; + } + singleRow = strBaseH; + strBaseH *= nnh; + } + + + if (org.x + strBaseW < 0 || org.y + strBaseH < 0) + { + SelectObject(hdc, holdfont); + DeleteObject(hf); + DeleteObject(hdc); + return; + } + + + r = org.x + strBaseW > dst.cols ? dst.cols - org.x - 1 : strBaseW - 1; + b = org.y + strBaseH > dst.rows ? dst.rows - org.y - 1 : strBaseH - 1; + org.x = org.x < 0 ? 0 : org.x; + org.y = org.y < 0 ? 0 : org.y; + + + BITMAPINFO bmp = { 0 }; + BITMAPINFOHEADER& bih = bmp.bmiHeader; + int strDrawLineStep = strBaseW * 3 % 4 == 0 ? strBaseW * 3 : (strBaseW * 3 + 4 - ((strBaseW * 3) % 4)); + + + bih.biSize = sizeof(BITMAPINFOHEADER); + bih.biWidth = strBaseW; + bih.biHeight = strBaseH; + bih.biPlanes = 1; + bih.biBitCount = 24; + bih.biCompression = BI_RGB; + bih.biSizeImage = strBaseH * strDrawLineStep; + bih.biClrUsed = 0; + bih.biClrImportant = 0; + + + void* pDibData = 0; + HBITMAP hBmp = CreateDIBSection(hdc, &bmp, DIB_RGB_COLORS, &pDibData, 0, 0); + + + CV_Assert(pDibData != 0); + HBITMAP hOldBmp = (HBITMAP)SelectObject(hdc, hBmp); + + + //color.val[2], color.val[1], color.val[0] + SetTextColor(hdc, RGB(255, 255, 255)); + SetBkColor(hdc, 0); + //SetStretchBltMode(hDC, COLORONCOLOR); + + + strcpy_s(buf, str); + const char* ln = strtok_s(buf, "\n", bufT); + int outTextY = 0; + while (ln != 0) + { + TextOutA(hdc, 0, outTextY, ln, strlen(ln)); + outTextY += singleRow; + ln = strtok_s(0, "\n", bufT); + } + uchar* dstData = (uchar*)dst.data; + int dstStep = dst.step / sizeof(dstData[0]); + unsigned char* pImg = (unsigned char*)dst.data + org.x * dst.channels() + org.y * dstStep; + unsigned char* pStr = (unsigned char*)pDibData + x * 3; + for (int tty = y; tty <= b; ++tty) + { + unsigned char* subImg = pImg + (tty - y) * dstStep; + unsigned char* subStr = pStr + (strBaseH - tty - 1) * strDrawLineStep; + for (int ttx = x; ttx <= r; ++ttx) + { + for (int n = 0; n < dst.channels(); ++n) { + double vtxt = subStr[n] / 255.0; + int cvv = vtxt * color.val[n] + (1 - vtxt) * subImg[n]; + subImg[n] = cvv > 255 ? 255 : (cvv < 0 ? 0 : cvv); + } + + + subStr += 3; + subImg += dst.channels(); + } + } + + + SelectObject(hdc, hOldBmp); + SelectObject(hdc, holdfont); + DeleteObject(hf); + DeleteObject(hBmp); + DeleteDC(hdc); +} + +void drawDefects(cv::Mat& sourceMat, QQueue defectInfoList) +{ + for (int i = 0; i < defectInfoList.size(); i++) + { + defectInfo mdefect = defectInfoList[i]; + + cv::rectangle(sourceMat, cv::Point(mdefect.defectRect.x, mdefect.defectRect.y), + cv::Point(mdefect.defectRect.x + mdefect.defectRect.width, mdefect.defectRect.y + mdefect.defectRect.height), mdefect.defectScalar, 3, 8); + + QByteArray path_arr = mdefect.defectName.toLocal8Bit(); + const char* path = path_arr.data(); + putTextZH(sourceMat, path, cv::Point(mdefect.defectRect.x, mdefect.defectRect.y - 50), mdefect.defectScalar, 50, "微软雅黑"); + } +} + + + +//判断文件夹是否存在,不存在则创建 +void Hd_AI_tmp_module_savImg::isDirExist(QString fullDirName) +{ + QDir* photo = new QDir; + bool exist = photo->exists(fullDirName); + if (exist) + { + //qDebug() << fullDirName << "::已存在"; + } + else + { + //创建photo文件夹 + //qDebug() << fullDirName << "::不存在,创建"; + photo->mkdir(fullDirName); + } + delete photo; + photo = nullptr; +} + +Hd_AI_tmp_module_savImg* create() +{ + qDebug() << "[INFO] " << " Hd_AI_tmp_module_savImg create success!" ; + return new Hd_AI_tmp_module_savImg; +} + +void destory(Hd_AI_tmp_module_savImg* ptr) +{ + qDebug() << "[INFO] " << "Hd_AI_tmp_module_savImg destory success!"; + if(ptr) + { + delete ptr; + ptr = nullptr; + } +} + +Hd_AI_tmp_module_savImg::Hd_AI_tmp_module_savImg() +{ + detect_mutex = new QMutex; + saveStruct_mutex = new QMutex; + ifdetectThread = false; + + for (int i = 0; i < 4; i++) + { + QString DirPath = "E:/testImg/source" + QString::number(i); + QStringList imgFilters; + imgFilters << "*.jpg" << "*.png" << "*.PNG" << "*.gif" << "*.tif" << "*.jpeg" << "*.bmp"; + QDir qdir(DirPath); + //返回文件名列表 + QStringList localSourceImgsName = qdir.entryList(imgFilters, QDir::Files | QDir::Readable, QDir::Name); + for (int j = 0; j < localSourceImgsName.size(); j++) + { + QString imgPath = DirPath + "/" + localSourceImgsName[j]; + QFile myf(imgPath); + if (myf.exists()) + myf.remove(); + //Sleep(1); + } + } +} + +Hd_AI_tmp_module_savImg::~Hd_AI_tmp_module_savImg() +{ + ifdetectThread = false; + Sleep(10); + if (detect_mutex) + { + delete detect_mutex; + detect_mutex = nullptr; + } + if (saveStruct_mutex) + { + delete saveStruct_mutex; + saveStruct_mutex = nullptr; + } + /*DestroySegObj(pSeg); + DestroyClsObj(pCls);*/ +} +//从类中读数据到实例对象 +bool Hd_AI_tmp_module_savImg::readData(std::vector&vec_mat,QByteArray &data) +{ + detect_mutex->lock(); + //qDebug() << __FUNCTION__ << " line:" <<__LINE__ << " data len:" << data.length(); + if (resMat.size()>0) + { + vec_mat.push_back(resMat[0]); + resMat.clear(); + } + else + { + if(HikMat.size()>0) + vec_mat.push_back(HikMat[0]); + //qDebug() << __FUNCTION__ << " line:" << __LINE__ << " resMat.data err:"; + } + //if (allNum++ % 2 == 0) + // data = "2*3*2";// resByte.dequeue(); + //else + data = "1*0*0";//1OK,2NG + resByte.clear(); + ////之后根据结果类修改 + //if(resIfNg == true) + // data = "NG"; + //else data = "OK"; + detect_mutex->unlock(); + /*if(cameraKey_index.contains('_')) + qDebug() << "[INFO] " << __FUNCTION__ << " line:" << __LINE__ << " checkImg getDetectData--CameraName:" + << cameraKey_index.split("_")[0] << " imgIndex:" << cameraKey_index.split("_")[1]; + else + qDebug() << "[INFO] " << __FUNCTION__ << " line:" << __LINE__ << " checkImg getDetectData--CameraName imgIndex:" << cameraKey_index;*/ + return true; +} +//从类中读数据到实例对象 +bool Hd_AI_tmp_module_savImg::encodeResultValue(QVector append_value,QByteArray &resultByte) +{ + try + { + std::string sendMsg; + for(int i = 0 ; i < append_value.size();i++) + { + std::string value = append_value.at(1); + //type + int type = 3; + std::string m_type; + m_type.insert(0,4,'1'); + memcpy ( (void*)m_type.c_str(),(void*)&type,4 ); + sendMsg.append(m_type); + + //len + int len = value.length(); + std::string m_len; + m_len.insert(0,4,'1'); + memcpy ( (void*)m_len.c_str(),(void*)&len,4 ); + sendMsg.append(m_len); + + //data x + sendMsg.append(value); + } + resultByte = QByteArray::fromStdString(sendMsg); + } catch (QString ev) + { + qCritical() << "[Error] " << " ev:" << ev; + return false; + } + return true; +} + +int myallNum[4] = {0}; +QMap lastImgMap; +//接收数据 +bool Hd_AI_tmp_module_savImg::writeData(std::vector& vec_mat, QByteArray &data) +{ + //qDebug() << __FUNCTION__ << "line:"<< __LINE__ << " data len" << data.length() ; + if(vec_mat.empty()) + { + qCritical() << "[Error] " << " vec_mat is null !"; + return false; + } + detect_mutex->lock(); + HikMat.clear(); + for (int i = 0; i < vec_mat.size(); i++) + HikMat.enqueue(vec_mat[i]); + + QByteArray source_savePath; + QByteArray sData = data; + QByteArrayList splitDataList = sData.split(','); + if (splitDataList.size() >= 4) + { + if (splitDataList[2].contains('_')) + cameraKey_index = splitDataList[2]; + QByteArray saveDir = splitDataList[0] + "/" + splitDataList[1] + "/"; + isDirExist(byteArrayToUnicode(saveDir)); //不存在,创建 + QString sdataTime= QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss-zzz"); + source_savePath = splitDataList[0] + "/" + splitDataList[1] + "/" + sdataTime.toLocal8Bit() + "-" + splitDataList[2] + "-" + splitDataList[3];// +".bmp"; + } + //int index = -1; + /*if (sData.contains("offline-camera0")) + { + index = 0; + savePath = "E:\\testImg\\source0\\"+QString::number(myallNum[0]++) + ".bmp"; + } + else if (sData.contains("offline-camera1")) + { + index = 1; + savePath = "E:\\testImg\\source1\\" + QString::number(myallNum[1]++) + ".bmp"; + } + else if (sData.contains("offline-camera2")) + { + index = 2; + savePath = "E:\\testImg\\source2\\" + QString::number(myallNum[2]++) + ".bmp"; + } + else if (sData.contains("offline-camera3")) + { + index = 3; + savePath = "E:\\testImg\\source3\\" + QString::number(myallNum[3]++) + ".bmp"; + }*/ + + + + + if (!source_savePath.isEmpty()) + { + //std::cout << "try savePath::" << savePath.toStdString() << std::endl; + //测试相机的, + //while (HikMat[0].cols > 2000)cv::resize(HikMat[0], HikMat[0], cv::Size(), 0.08, 0.08);' + for (int i = 0; i < initValueList.size(); i++) + { + QString minit = byteArrayToUnicode(initValueList[i]); + if (initValueList[i].contains(data.split(',')[2].split('_')[0])) + if (initValueList[i].contains(QString("原图_保存").toLocal8Bit())) + { + addImgToSaveStruct(HikMat[0], "0", byteArrayToUnicode(source_savePath + ".bmp"));//保存原图 + if (HikMat.size() == 2)//3D + addImgToSaveStruct(HikMat[1], "0", byteArrayToUnicode(source_savePath + ".tif")); + } + } + } + + //if (myallNum[index] == 1) + //{ + // cv::Mat img; + // lastImgMap.insert(index, img); + //} + //else + //{ + // //判断和上一张图,是否重复 + // int dataLength = HikMat[0].total() * HikMat[0].elemSize(); + // bool res = false; + // if (myallNum[index] > 0) + // { + // cv::Mat img = lastImgMap.value(index); + // if (img.total() * img.elemSize() == dataLength) + // { + // res = memcmp(img.data, HikMat[0].data, dataLength) == 0; + // if (res == true) + // std::cout << "res ==true ====!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; + // } + // } + //} + //lastImgMap.insert(index, HikMat[0]); + + //or检测:保存路径,拍照面描述,相机key_第几张图,SN_时间戳 + //and检测:保存路径,拍照面描述,相机key_第几张图,相机key_第几张图,SN_时间戳,SN_时间戳 + //汇总:保存路径,拍照面描述,触发信号_序号列表0,SN_时间戳 + QString qstring_data = data; + QStringList datalist = qstring_data.split(','); + + + /*saveKey.enqueue("datalist[0]"); + Dir2D.enqueue("datalist[1]"); + QStringList SN_dataTime; + SN_dataTime = datalist[3].split('_'); + DateTime1 = "SN_dataTime[1]"; + SN.enqueue("SN_dataTime[0]");*/ + //qCritical() << __FUNCTION__ << " line: " << __LINE__ << " data:" << qstring_data; + detect_mutex->unlock(); + + //qDebug() << __FUNCTION__ << "line:" << __LINE__ << "[INFO] " << " data: " << data << " run end"; + //cv::Mat resultDstImg = vec_mat[0].clone();// = pSeg->Evaluate(sourceImg); //返回单通道二值图 图片错误输出Image Error!但不报错。。 + //resultDstImg = pSeg->Evaluate(resultDstImg); + //resultDstImg.release(); + + return true; +} + +//传入initParas函数,格式为:相机key+参数名1#参数值1#参数值2+参数名2#参数值1... +//初始化 +bool Hd_AI_tmp_module_savImg::initParas(QByteArray& byte) +{ + initValueList = byte.split('+'); + QStringList valueiList; + + if (byte.contains("onlySetParameter")) + { + qDebug() << __FUNCTION__ << " line:" << __LINE__ << "onlySetParameter,valueList[0]:" << initValueList[0]; + if (initValueList.size() > 1) + for (int i = 1; i < initValueList.size(); i++) + { + QString valuei = byteArrayToUnicode(initValueList[i]); + qDebug() << __FUNCTION__ << " line:" << __LINE__ << "onlySetParameter,lastName:" << initValueList[0] << " ,valuei:" << valuei; + } + return true; + } + + + if (initValueList.size() > 1) + for (int i = 1; i < initValueList.size(); i++) + { + QString valuei = byteArrayToUnicode(initValueList[i]); + valueiList.append(valuei); + } + + + /*pSeg = CreateSegObjS(pSeg_modulePath, 128, gpuId); + pCls = CreateClsObjV3(pCls_modulePath, gpuId, 1);*/ + + + //StationNo = vec_ret.at(0).toInt(); + + //InitThreads(StationNo, img2D); + //InitModels(StationNo, img2D); + + //运行检测线程 + ifdetectThread = true; + + //线程检测:结果类完成时,使用 + //ifThreadRunDetect = true; + //QFuture future1 = QtConcurrent::run(this, &Hd_AI_tmp_module_savImg::detectThread); + //运行存图线程 + QFuture future2 = QtConcurrent::run(this, &Hd_AI_tmp_module_savImg::saveImgThread); + //detectThread(); + + //原图总文件夹 + isDirExist(oriImgSaveDir); + //原图class总文件夹 + isDirExist(classImgSaveDir); + //结果图总文件夹 + isDirExist(resImgSaveDir); + + + //qDebug() << "[INFO] " << " StationNo:" << StationNo << " img2D:" << img2D ; + return true; +} +// 解码 +bool Hd_AI_tmp_module_savImg::decodeAiValue(QByteArray byte,QVector &vec_ret) +{ + if(byte.isEmpty()) + { + qCritical() << "[Error] " << " byte is null!"; + return false; + } + + /*******************************************/ + byte.remove(0,8); + QByteArray mm_data = byte.mid(0,4); + memcpy((void*)¶mNum,(void*)mm_data.data(), 4); + qDebug() << "[INFO] " << " paramNum:" << paramNum; + byte.remove(0,4); + /*******************************************/ + + while (!byte.isEmpty()) + { + int type = 0; + QByteArray m_type = byte.mid(0,4); + memcpy((void*)&type,(void*)m_type.data(), 4); + byte.remove(0,4); + + int len = 0; + QByteArray m_len = byte.mid(0,4); + memcpy((void*)&len,(void*)m_len.data(), 4); + byte.remove(0,4); + + QByteArray mm_data = byte.mid(0,len); + vec_ret.append(mm_data); + byte.remove(0,len); + } + return true; +} + +//---------检测流程,根据实际项目修改--------- +bool Hd_AI_tmp_module_savImg::AIdetect(cv::Mat img2D, QString mysaveKey, QString myDir2D, QString mySN, QString myDataTime) +{ + try + { + //存图数据加保存队列,加锁,避免数据访问冲突 + saveStruct_mutex->lock(); + saveImgStruct mySave; + Mat sourceImg; + sourceImg = img2D.clone(); + //img2D.copyTo(sourceImg); + //img2D.release(); + QString mysaveKey1 = mysaveKey; //"offlineStation1_off_1" + saveStruct_mutex->unlock(); + + QJsonDocument document; + QJsonObject obj; + obj.insert("result_key", "mysaveKey"); + obj.insert("SN", "mySN"); + obj.insert("DataTime", "myDataTime"); + + + //QFile csvName("test.csv"); + //QStringList lines; + //lines << "class,name\n" << "3,4,5,6,7\n" << "a,b,c,d\n"; + //if (csvName.open(QIODevice::WriteOnly)) //若文件不存在,会自动创建 + //{ + // for (int i = 0; i < lines.size(); i++) + // csvName.write(lines[i].toStdString().c_str()); + // csvName.close(); + //} + + QQueue defectInfoList; + + //seg后class检测逻辑 + /*if (0) { + Mat sourceRectangles;// 在原图缺陷位置,边界矩形框出 + sourceRectangles = sourceImg.clone(); + //sourceImg.copyTo(sourceRectangles); + vector> contours; + + //seg检测 + Mat resultDstImg;// = sourceImg.clone();// = pSeg->Evaluate(sourceImg); //返回单通道二值图 图片错误输出Image Error!但不报错。。 + resultDstImg = pSeg->Evaluate(sourceImg); + //int resultClass = pCls->Evaluate(sourceImg); //类别id + + //opencv对二值图进行处理 + //GaussianBlur(resultDstImg, resultDstImg, Size(3, 3), 1); //缺陷过滤值较大时,可以减少检出数;缺陷较小时,漏检较多 + threshold(resultDstImg, resultDstImg, pSeg->m_classes, 255, THRESH_BINARY_INV);//大于部分设为0,小于部分设为255 + //findContours(resultDstImg, contours, cv::noArray(), cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE); //不识别内部轮廓,有些情况抓到的图像外框? + findContours(resultDstImg, contours, cv::noArray(), cv::RETR_TREE, cv::CHAIN_APPROX_NONE); //需要内部轮廓的写法 + + if (contours.size() == 0) + { + //printf("Notlabeled\n"); + } + else + { + for (int j = 0; j < contours.size(); j++) + { + Rect rect1 = boundingRect(Mat(contours[j])); + + //最小缺陷过滤参数,根据项目实际设置! + int filterNum = 10; + float w = rect1.width * 1.0; + float h = rect1.height * 1.0; + if ((w / sourceImg.cols > 0.98) || (h / sourceImg.rows > 0.98)) + { + //抓到图像外框了 + //qDebug() << "NG is too big..."; + continue; + } + //且逻辑,有的项目需要或逻辑!! + if ((w > filterNum && h > filterNum))//||rect1.area> filterNum*filterNum*1.5) + { + //class检测mat + Mat imgCls; + + //此段为切图逻辑为: + //缺陷外扩5像素; + //判断最大边,大于class建网大小的,按照最大边尺寸比例切大图,然后resize为建网大小;最大边小于等于建网大小的,按照建网大小切图; + //越界填充 + { + int startX = rect1.x - 5; + int startY = rect1.y - 5; + int endX = rect1.x + rect1.width + 5; + int endY = rect1.y + rect1.height + 5; + + //尺寸比例 + double maxscaler, scalerX, scalerY; + maxscaler = 1.0; + scalerX = (endX - startX) * 1.0 / sizeW;//*1.0转为float,避免被取整了 + scalerY = (endY - startY) * 1.0 / sizeH; + + maxscaler = max(maxscaler, max(scalerX, scalerY)); + + int avgX = (rect1.x + rect1.x + rect1.width) / 2; //中点X位置 + int avgY = (rect1.y + rect1.y + rect1.height) / 2;//中点Y位置 + + startX = avgX - int(maxscaler * sizeW / 2);//强转为int + endX = startX + int(maxscaler * sizeW); + startY = avgY - int(maxscaler * sizeH / 2); + endY = startY + int(maxscaler * sizeH); + + //判断是否越界,越界要填充的像素个数 + int copyTop = max(0, 0 - startY); + int copyButton = max(0, endY - sourceImg.rows); + int copyLeft = max(0, 0 - startX); + int copyRight = max(0, endX - sourceImg.cols); + + //切图不要越界,会崩溃 + Mat imgCut = sourceImg(Range(max(0, startY - copyTop), min(sourceImg.rows, endY - copyButton)), + Range(max(0, startX - copyLeft), min(sourceImg.cols, endX - copyRight))); //起始行,终止行;起始列,终止列 + + //图像扩充 + if (sourceImg.channels() == 1) + { + copyMakeBorder(imgCut, imgCut, copyTop, copyButton, copyLeft, copyRight, BORDER_CONSTANT, fillColour); + } + else + { + copyMakeBorder(imgCut, imgCut, copyTop, copyButton, copyLeft, copyRight, BORDER_CONSTANT, Scalar(fillColour, fillColour, fillColour)); + } + //resize为建网大小 + cv::resize(imgCut, imgCls, cv::Size(sizeW, sizeH)); + imgCut.release(); + } + + + int resultClass = 0; + float prob = 1.0; + + resultClass = pCls->Evaluate(imgCls); //类别id + prob = pCls->getProbability(); //可能性 + + //切图保存,按需 + { + isDirExist(classImgSaveDir + mysaveKey1 + "/class_" + QString::number(resultClass)); + //存图数据入队,按需 + addImgToSaveStruct(imgCls, mysaveKey1, classImgSaveDir + mysaveKey1 + "/class_" + QString::number(resultClass) + "/" + mySN + myDataTime + QString::number(j) + ".bmp"); + } + + //此处应添加缺陷计数逻辑 + + if (resultClass == 0)//OK + { + ; + } + else if (resultClass == 1)//划伤Scratch + { + resIfNg = true; + //rectangle(sourceRectangles, rect1.tl(), rect1.br(), Scalar(0, 0, 255), 3, 8); + ////可行,必须转一下格式 + //{ + // QString pathQstr = "划伤"; + // QByteArray path_arr = pathQstr.toLocal8Bit(); + // const char* path = path_arr.data(); + // putTextZH(sourceRectangles, path, cv::Point(rect1.tl().x, rect1.tl().y - 5), Scalar(255, 0, 0), 50, "微软雅黑"); + //} + + defectInfo mdefectInfo; + mdefectInfo.defectName = "划伤"; + mdefectInfo.defectRect = rect1; + mdefectInfo.defectArea = contourArea(contours[j]); + mdefectInfo.defectScalar = cv::Scalar(0, 0, 255); + defectInfoList.enqueue(mdefectInfo); + } + else if (resultClass == 2)//碰伤 + { + resIfNg = true; + defectInfo mdefectInfo; + mdefectInfo.defectName = "碰伤"; + mdefectInfo.defectRect = rect1; + mdefectInfo.defectArea = contourArea(contours[j]); + mdefectInfo.defectScalar = cv::Scalar(0, 255, 255); + defectInfoList.enqueue(mdefectInfo); + } + imgCls.release(); + } + else { + //cout << "ng is too small<" << filterNum << endl; + continue; + } + } + } + //cv::Mat resMat = img2D.clone(); + sourceRectangles.release(); + contours.resize(0); + resultDstImg.release(); + } + */ + + detect_mutex->lock(); + //resMat = sourceImg.clone(); + //sourceImg.copyTo(resMat); + resMat.push_back(sourceImg); + //结果图画框和缺陷,在resMat上绘制 + if (resMat.size() > 0) + drawDefects(resMat[0], defectInfoList); + + //QByteArray,根据实际项目进行解析 + //参数,例:返回结果图;相机关键字(SN或userID)+保存路径+缺陷信息列表(缺陷名称,缺陷位置int(x,y,w,h),画框颜色Scalar(a,b,c),缺陷面积double) + + QJsonArray detaillists; + //QByteArrayList resQbyte; + for (int i = 0; i < defectInfoList.size(); i++) + { + defectInfo mdefect = defectInfoList[i]; + //resQbyte.push_back(mdefect.defectName.toLocal8Bit()); //中文也可以QString::number(1.1).toUtf8() + //resQbyte.push_back(QString::number(mdefect.defectRect.x).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.y).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.width).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectRect.height).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[0]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[1]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectScalar[2]).toUtf8()); + //resQbyte.push_back(QString::number(mdefect.defectArea).toUtf8()); + QJsonObject detailObj; + detailObj.insert("defectName", "mdefect.defectName"); + detailObj.insert("defectRect.x", QString::number(mdefect.defectRect.x)); + detailObj.insert("defectRect.y", QString::number(mdefect.defectRect.y)); + detailObj.insert("defectRect.width", QString::number(mdefect.defectRect.width)); + detailObj.insert("defectRect.height", QString::number(mdefect.defectRect.height)); + detailObj.insert("defectScalar0", QString::number(mdefect.defectScalar[0])); + detailObj.insert("defectScalar1", QString::number(mdefect.defectScalar[1])); + detailObj.insert("defectScalar2", QString::number(mdefect.defectScalar[2])); + detailObj.insert("defectArea", QString::number(mdefect.defectArea)); + detailObj.insert("defectLength", QString::number(sqrt(mdefect.defectRect.width* mdefect.defectRect.width+ mdefect.defectRect.height* mdefect.defectRect.height))); + + detaillists.append(detailObj); + } + + + //使用完删除 + defectInfoList.clear(); + + //往主界面发 + //emit sendResultData(resMat, resQbyte); + //resQbyte.clear(); + + isDirExist(resImgSaveDir + mysaveKey1 + "/"); + QString qimgsavePath = resImgSaveDir + mysaveKey1 + "/" + mySN + myDataTime + ".png"; + //存图数据入队,按需 + if (resMat.size() > 0 ) + addImgToSaveStruct(resMat[0], mysaveKey1, resImgSaveDir + mysaveKey1 + "/" + mySN + myDataTime + ".png"); + detect_mutex->unlock(); + + obj.insert("detaillists", detaillists); + obj.insert("qimgsavePath", qimgsavePath); + document.setObject(obj); + //resByte.clear(); + QByteArray qa = document.toJson(); + //resByte .enqueue(qa); + + + //resMat.release(); + sourceImg.release(); + + mySave.out_Mat.resize(0); + mysaveKey1.clear(); + qApp->processEvents(); + + + ////原图和结果都往主界面发? + //std::vector resMat; + //resMat.push_back(img2D); + //resMat.push_back(sourceRectangles); + //QByteArray resByte = mysaveKey.toLocal8Bit(); + //resByte.append(myDir2D.toLocal8Bit()); + //resByte.append(mySN.toLocal8Bit()); + //resByte.append(myDataTime.toLocal8Bit()); + + ////往主界面发送图片和数据 + ////emit writeData(resMat, resByte); + //resMat.resize(0); + //resByte.resize(0); + } + catch (...) + { + qDebug() << "[Error] " << QString::fromUtf8("检测失败!"); + return false; + } + return true; + +} + +//存图加入队列 +void Hd_AI_tmp_module_savImg::addImgToSaveStruct(cv::Mat img2D, QString mysaveKey, QString savePath) +{ + //存图数据加保存队列,加锁,避免数据访问冲突 + saveStruct_mutex->lock(); + saveImgStruct mySave; + mySave.out_Mat = img2D.clone(); + //img2D.copyTo(mySave.out_Mat); + mySave.saveKey = mysaveKey.toLocal8Bit().toStdString(); + mySave.savePath = savePath.toLocal8Bit().toStdString(); + saveStruct.enqueue(mySave); + saveStruct_mutex->unlock(); +} +void Hd_AI_tmp_module_savImg::saveImgThread() +{ + while (1) + { + if (!ifdetectThread)return; + _sleep(5); + qApp->processEvents(); + if (saveStruct.size() < 1)continue; + for (int i = 0; i < saveStruct.size(); i++) + { + clock_t start, stop; + start = clock(); + saveStruct_mutex->lock(); + saveImgStruct mysaveStruct = saveStruct.dequeue(); + saveStruct_mutex->unlock(); + stop = clock(); + if(stop-start >1000) + std::cout << "lock stop-start >1000::************************" << stop - start << std::endl; + start = clock(); + if (mysaveStruct.out_Mat.data) + imwrite(mysaveStruct.savePath, mysaveStruct.out_Mat); + //std::cout << "savePath::" << mysaveStruct.savePath << std::endl; + stop = clock(); + if (stop - start > 1000) + std::cout << "imwrite stop-start >1000::--------------------------"<< stop - start << std::endl; + _sleep(1); + } + } +} +//检测线程,应当只运行一次 +void Hd_AI_tmp_module_savImg::detectThread() +{ + do + { + if (!ifdetectThread)return; + + //此两行代码,避免程序卡死;_sleep的时间根据实际项目调整 + _sleep(2); + qApp->processEvents(); + //取数据加锁,避免数据访问冲突 + detect_mutex->lock(); + //if (HikMat.size() < 1 || saveKey.size() < 1 || Dir2D.size() < 1 || SN.size() < 1 )//|| DateTime1.size() < 1) + //{ + // detect_mutex->unlock(); + // continue; + //} + + cv::Mat sourceImg1 = HikMat[0];// .dequeue(); + QString mysaveKey = "saveKey";// .dequeue(); + QString myDir2D = "Dir2D";// .dequeue(); + QString mySN = "SN";// .dequeue(); + QString myDataTime = "DateTime1"; + detect_mutex->unlock(); + + //判断存图文件夹是否存在,不存在则创建 + { + //原图总文件夹 + isDirExist(oriImgSaveDir + mysaveKey); + //原图class总文件夹 + isDirExist(classImgSaveDir + mysaveKey); + //结果图总文件夹 + isDirExist(resImgSaveDir + mysaveKey); + + } + + //测试相机的, + while (sourceImg1.cols > 2000)cv::resize(sourceImg1, sourceImg1, cv::Size(), 0.5, 0.5); + + //存图数据入队 + //addImgToSaveStruct(sourceImg1, mysaveKey, oriImgSaveDir + mysaveKey + "/" + mySN + myDataTime + ".bmp"); + + //-------检测流程,根据实际项目修改--------- + AIdetect(sourceImg1, mysaveKey, oriImgSaveDir, mySN, myDataTime); + //sourceImg1.release(); + + mysaveKey.clear(); + myDir2D.clear(); + mySN.clear(); + myDataTime.clear(); + qApp->processEvents(); + + } while (ifThreadRunDetect); + +} + +static int runNum = 0; +bool Hd_AI_tmp_module_savImg::run() +{ + clock_t start, stop; + start = clock(); + + //Sleep(1000); + //detectThread(); + //stop = clock(); + //qDebug() << __FUNCTION__ << "line:" << __LINE__ << " run start ::runNum::" << runNum++<<" cutTime::"< +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "imgproc/imgproc_c.h" + +#include "base.h" + +#pragma execution_character_set("utf-8") + + + +//保存图片的结构体 +struct saveImgStruct; +//{ +// cv::Mat out_Mat; +// std::string saveKey; //关键字,用于LOG日志 +// std::string savePath; //保存路径 +//}; + +//初始化流程(一次):Hd_AI_tmp_module_savImg,initParas +//运行流程:writeData主线程把数据传过来,run,readData此线程把数据传主线程 +class Hd_AI_tmp_module_savImg :public Base +{ + Q_OBJECT +public: + Hd_AI_tmp_module_savImg(); + virtual ~Hd_AI_tmp_module_savImg(); + //从类中读数据到实例对象 + bool readData(std::vector&,QByteArray&); + //实例对象把数据写入到类 + bool writeData(std::vector&, QByteArray&); + bool initParas(QByteArray&); + //运行(Logic_taskthread.cpp) + bool run(); + //线程状态 + bool checkStatus();// { return true; }; + + bool encodeResultValue(QVector append_value,QByteArray &resultByte); + bool decodeAiValue(QByteArray byte,QVector &vec_ret); + //---------检测流程,根据实际项目修改--------- + bool AIdetect(cv::Mat img2D, QString saveKey, QString Dir2D, QString SN, QString DataTime); + + + +private: + + int allNum = 0; + int StationNo=0; + int img2D = 2; + + bool moduleStatus = true; + + //输入图片队列 + QQueue HikMat; + //输入关键字队列 + QString saveKey="saveKey"; + //结果路径文件夹队列 + QString Dir2D="Dir2D"; + //产品SN队列 + QString SN="SN"; + //产品时间戳队列 + QString DateTime1="DateTime1"; + + int paramNum; + + //是否使用线程检测方式 + bool ifThreadRunDetect = false; + //检测结果图 + std::vector resMat; + //检测结果 + bool resIfNg = false; + + QQueue resByte; + + //检测线程 + void detectThread(); + //存图线程 + void saveImgThread(); + + //保存图片队列 + QQueue saveStruct; + + //判断文件夹是否存在,不存在则创建 + void isDirExist(QString fullDirName); + + //存图加入队列 + void addImgToSaveStruct(cv::Mat img2D, QString saveKey, QString savePath); +}; + +extern "C" +{ + Q_DECL_EXPORT Hd_AI_tmp_module_savImg * create(); + Q_DECL_EXPORT void destory(Hd_AI_tmp_module_savImg * ptr); +} +//保存图片的结构体 +struct saveImgStruct +{ + cv::Mat out_Mat; + std::string saveKey; //关键字,用于LOG日志 + std::string savePath; //保存路径 +}; +#endif // Hd_AI_927_2D_module_H diff --git a/BaseModules/Hd_AI_tmp_module_savImg/base.h b/BaseModules/Hd_AI_tmp_module_savImg/base.h new file mode 100644 index 0000000..00bd6b2 --- /dev/null +++ b/BaseModules/Hd_AI_tmp_module_savImg/base.h @@ -0,0 +1,69 @@ +#ifndef __BASECLASS_H__ +#define __BASECLASS_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class Base :public QObject +{ + Q_OBJECT +public: + bool init_flag; //是否初始化,false,true + bool status = true; //相机状态(判断相机是否断开连接) + std::string paras; //传输数据 + std::vector m_mat; //传输图片 + std::string moduleName; //模块名称 +public: + Base(){} + virtual ~Base(){} + virtual bool readData(std::vector&,QByteArray&){return true;} + virtual bool writeData(std::vector&,QByteArray&){return true;} + virtual bool initParas(QByteArray&){return true;} + virtual bool run() {return true;} + virtual bool checkStatus() { return true; } + +//signals: + //QByteArrayList,根据实际项目进行解析;因不确定每个参数的长度,固用队列的方式。每个QByteArray表示一个值,使用时先转换为QString + //参数,例:返回结果图;相机关键字(SN或userID)+保存路径+缺陷信息列表(缺陷名称,缺陷位置int(x,y,w,h),画框颜色Scalar(a,b,c),缺陷面积double) + //void sendResultData(cv::Mat resMat, QJsonObject resQbj); +}; + +/* +//QJsonObject 转QByteArray +{ + QJsonDocument document; + QJsonObject obj; + obj.insert(password, "pwd"); + obj.insert(userName, "usr"); + document.setObject(obj); + QByteArray abyte = document.toJson(QJsonDocument::Compact); +} + +//QByteArray转QJsonObject +{ + QByteArray ba = reply->readAll(); + QJsonDocument doc = QJsonDocument::fromJson(ba); + QJsonObject obj = doc.object(); +} +*/ +/* +//从类中读数据到实例对象 +virtual bool readData(std::vector&,QByteArray&){return true;} + + + + + + + + +*/ + +#endif diff --git a/BaseModules/Hd_LogicDll_module/Logic_camera_thread.cpp b/BaseModules/Hd_LogicDll_module/Logic_camera_thread.cpp index f96fd8d..7ec0544 100644 --- a/BaseModules/Hd_LogicDll_module/Logic_camera_thread.cpp +++ b/BaseModules/Hd_LogicDll_module/Logic_camera_thread.cpp @@ -21,6 +21,7 @@ bool Logic_camera_thread::setModule( QString station_name,MyModule module,QJsonO m_name = obj.value("相机key").toString(); m_type = "camera";// camera_obj.value("camera_type").toString(); getImgTimeout = obj.value("取图超时").toString().toInt(); + maxCheckTime = obj.value("拍照信号-检查完成的时间").toString().toDouble(); if (m_name.isEmpty() || m_type.isEmpty()) { qCritical() << "[Error] " << " camera_key or camera_type is null"; @@ -76,6 +77,7 @@ void Logic_camera_thread::set_m_stoprun(bool val) QMutexLocker locker(ifMissImage_mutex); // 加锁 m_stoprun = val; } +clock_t maxTime_start, maxTime_stop; void Logic_camera_thread::run() { while (ifRun) @@ -86,7 +88,7 @@ void Logic_camera_thread::run() m_stoprun = false; getImg_faileNums = 0; ifsaveImage = false; - //set_ifMissImage(false); + set_ifMissImage(false); cu_runNum = 0; int last_addImageNums = addImageNums; maxTime_start = clock(); @@ -288,14 +290,9 @@ bool Logic_camera_thread::runCameraModule() //QMutexLocker locker(ifMissImage_mutex); // 加锁 QByteArray task_name; std::vector camera_mat; - if (CommunicationProcessLevel == 2 && waitenum++%100==0) - { - //missImgae_addImage(camera_mat); - qCritical() << __FUNCTION__ << " line:" << __LINE__ << " m_name:" << m_name << " waite trigger!"<< waitenum; - } if (CommunicationProcessLevel == 2 && maxTime_stop - maxTime_start > maxCheckTime) { - qCritical() << __FUNCTION__ << " line:" << __LINE__ << "maxCheckTime! add img, hardware" << m_Module.module_key; + qCritical() << __FUNCTION__ << " line:" << __LINE__ << " m_name:" << m_name << " maxTime_stop - maxTime_start > maxCheckTime,missImgae_addImage!"; missImgae_addImage(camera_mat); } else @@ -306,16 +303,8 @@ bool Logic_camera_thread::runCameraModule() { Sleep(10); qApp->processEvents(); - myTime += 10; - if (myTime % 1000 == 0) - { - if (CommunicationProcessLevel == 2) - { - //missImgae_addImage(camera_mat); - qCritical() << __FUNCTION__ << " line:" << __LINE__ << " m_name:" << m_name << " waite trigger!"; - } - } - if (myTime > maxCheckTime) + maxTime_stop = clock(); + if (maxTime_stop - maxTime_start > getImgTimeout) { if (CommunicationProcessLevel == 2) { @@ -488,12 +477,12 @@ void Logic_camera_thread::setMutex(QMutex *mutex) m_mutex = new QMutex;// mutex; } -bool Logic_camera_thread::sendDataCommond( QString m_type,cv::Mat mat,QByteArray byteArray ) +bool Logic_camera_thread::sendDataCommond( QString m_type,cv::Mat mat,QByteArray byteArray) { QMutexLocker locker(m_mutex); dataPack m_pack; m_pack.mat = mat; - m_pack.byteArray = byteArray; + m_pack.byteArray = byteArray; m_pack.retFlag = m_type; m_pack.cameraName = m_name; diff --git a/BaseModules/Hd_LogicDll_module/Logic_camera_thread.h b/BaseModules/Hd_LogicDll_module/Logic_camera_thread.h index 24d5c51..2f3e911 100644 --- a/BaseModules/Hd_LogicDll_module/Logic_camera_thread.h +++ b/BaseModules/Hd_LogicDll_module/Logic_camera_thread.h @@ -1,4 +1,4 @@ -#ifndef Logic_camera_thread_H +#ifndef Logic_camera_thread_H #define Logic_camera_thread_H #include @@ -17,6 +17,7 @@ #include #include #include +#include #include "struct.h" #include "Logic_hdataintegration.h" @@ -32,7 +33,7 @@ public: void setRunFlag(bool flag){ m_stoprun = flag; } void setMutex( QMutex *mutex); void setSaveImage( QString save){ m_saveImage = save;} - bool sendDataCommond(QString m_type,cv::Mat mat,QByteArray byteArray); + bool sendDataCommond(QString m_type,cv::Mat mat,QByteArray byte); bool runCameraModule(); bool saveImage(std::vector mat); //设置相机key、取图超时、模块、拍照面描述、触发方式 @@ -82,8 +83,8 @@ public: QMutex* m_iomutex = nullptr; Base* finstcp_ptr = nullptr; QByteArray send_byte; - int maxCheckTime = 3000; - int waitenum = 0; + double maxCheckTime = 3000; + private: QQueue mydataIntegrationThread ; QObject *m_obj; @@ -106,8 +107,6 @@ private: QMutex* ifMissImage_mutex = nullptr; //相机数据包 QQueue camera_ImageDataPack; - int hardNum = 0; - clock_t maxTime_start, maxTime_stop; signals: }; diff --git a/BaseModules/Hd_LogicDll_module/Logic_hdataprocess.cpp b/BaseModules/Hd_LogicDll_module/Logic_hdataprocess.cpp index 368b59e..24a420c 100644 --- a/BaseModules/Hd_LogicDll_module/Logic_hdataprocess.cpp +++ b/BaseModules/Hd_LogicDll_module/Logic_hdataprocess.cpp @@ -485,7 +485,7 @@ QByteArray HAlgorithmData::getAlgorithmData(QString SNdataTime,QString cameraNam QByteArray HAlgorithmData::getIndexData(Algorithm_Result_Data result_data, int result_index, QString algorithm_result_index) { - //qDebug() << __FUNCTION__ << " line: " << __LINE__ << " algorithmKey:" << algorithmKey << " cameraName_and_index: " << cameraName_and_index << " result_data.byteArray len:" << result_data.byteArray.length(); + //qDebug() << __FUNCTION__ << " line: " << __LINE__ << " algorithmKey:" << algorithmKey << " cameraName_and_index: " << cameraName_and_index << " result_data.byte len:" << result_data.byte.length(); Algorithm_Result_Data_index index_pack; if (map_delete_Result_index.keys().contains(result_data.key_index)) @@ -503,10 +503,10 @@ QByteArray HAlgorithmData::getIndexData(Algorithm_Result_Data result_data, int r QString cameraName = list.at(0); QString task_index = list.at(1); //Logic_taskthread运行算法/汇总模块后,返回的数据 - QByteArray byteArray = result_data.byteArray; + QByteArray byte = result_data.byteArray; //result_data.byte转 QByteArrayList vec_Data; - vec_Data = byteArray.split('#'); + vec_Data = byte.split('#'); if (vec_Data.isEmpty()) { @@ -520,7 +520,7 @@ QByteArray HAlgorithmData::getIndexData(Algorithm_Result_Data result_data, int r return index_byte; } - index_byte = vec_Data[algorithm_result_index.toInt()];// byteArray;// QByteArray::fromStdString(sendMsg); + index_byte = vec_Data[algorithm_result_index.toInt()];// byte;// QByteArray::fromStdString(sendMsg); // 删除map中的数据 if (vec_Data.size() == 1) diff --git a/BaseModules/Hd_LogicDll_module/Logic_hdataprocess.h b/BaseModules/Hd_LogicDll_module/Logic_hdataprocess.h index dfe6033..a80fe8b 100644 --- a/BaseModules/Hd_LogicDll_module/Logic_hdataprocess.h +++ b/BaseModules/Hd_LogicDll_module/Logic_hdataprocess.h @@ -22,7 +22,7 @@ typedef struct //or检测:保存路径,拍照面描述,相机key_第几张图,SN_时间戳 //and检测:保存路径,拍照面描述,相机key_第几张图,相机key_第几张图,SN_时间戳,SN_时间戳 //汇总:保存路径,触发信号_序号列表0,,SN_时间戳 - QByteArray byteArray; + QByteArray byteArray; std::vector dstImageMat; //拍照面描述 QString Surface; @@ -104,8 +104,8 @@ public: int m_index = 0; int image_queue_num = 0; //划分相机任务的数量 - QString cameraKey; private: + QString cameraKey; QJsonArray readSnFormatArray; // 存储sn码的格式 QVector*>> vector_vector_queue_mat_ptr; // 存储相机图片任务的容器;QVector*>为通道的 QMutex* m_mutex; diff --git a/BaseModules/Hd_LogicDll_module/Logic_myiothread.cpp b/BaseModules/Hd_LogicDll_module/Logic_myiothread.cpp index dfe1a49..033a399 100644 --- a/BaseModules/Hd_LogicDll_module/Logic_myiothread.cpp +++ b/BaseModules/Hd_LogicDll_module/Logic_myiothread.cpp @@ -187,6 +187,7 @@ void Logic_myiothread::run() // 一个信号取多张的情况,取图时间长,和通信线程分开。 m_runAndCheck_cameraThread->start(); int times = 0; + heart_start = clock(); while ( io_runflag ) { //心跳(定时向PLC的指定寄存器写入值)代码。 @@ -194,92 +195,65 @@ void Logic_myiothread::run() { //break; //times++; - Sleep(10); - qApp->processEvents(); - if ((m_heartTime / 10) <= times++) + + QStringList m_heartCmdList = m_heartCmd.split("#"); + for (int m = 0; m < m_heartCmdList.size(); m++) { - if (!m_heartCmd.isEmpty()) - {// 发送心跳 - ////QMutexLocker locker(m_iomutex);; - QByteArray byteArray = m_heartCmd.toUtf8(); // 设置 从起始位开始读取的指令 - if (!finstcp_ptr->writeData(vec_mat, byteArray)) - { - qCritical() << __FUNCTION__ << "line:" << __LINE__ << " finstcp_ptr reciveData error!"; - } - times = 0; - } - } - else - { - if (!rest_signal.isEmpty()) + Sleep(10); + qApp->processEvents(); + heart_stop = clock(); + //if ((m_heartTime / 10) <= times++) + if (heart_stop - heart_start >= m_heartTime) { - if (times % int(m_heartTime / 50 + 1) == 0) - { - // 修改读取多个命令 - //QMutexLocker locker(m_iomutex);; - QByteArray byteArray = readAll_cmd.toUtf8(); // 设置 从起始位开始读取的指令 - if (!finstcp_ptr->writeData(vec_mat, byteArray)) + heart_start = clock(); + if (!m_heartCmdList[m].isEmpty()) + {// 发送心跳 + ////QMutexLocker locker(m_iomutex);; + QByteArray byte = m_heartCmdList[m].toUtf8(); // 设置 从起始位开始读取的指令 + if (!finstcp_ptr->writeData(vec_mat, byte)) { qCritical() << __FUNCTION__ << "line:" << __LINE__ << " finstcp_ptr reciveData error!"; } - - // 读取到的信息解析 - QByteArray readByte; - if (!finstcp_ptr->readData(vec_mat, readByte)) + times = 0; + } + } + else + { + if (!rest_signal.isEmpty()) + { + if (times % int(m_heartTime / 50 + 1) == 0) { - qCritical() << __FUNCTION__ << "line:" << __LINE__ << " finstcp_ptr sendData error!"; - } - - if (readByte.isEmpty()) - return; - QByteArray readsnByte = readByte; - QVector vec_value; - while (!readByte.isEmpty()) - { - QByteArray retByte = readByte.mid(0, 2); - readByte.remove(0, 2); - - QString msg = retByte.toHex(); - int number_tmp = msg.toInt(NULL, 16); - vec_value.push_back(number_tmp); - } - - QString m_startpos = rest_signal.split("_")[0]; - QString m_value = rest_signal.split("_")[1]; - int trigger_index = m_startpos.mid(1, m_startpos.length() - 1).toInt(); - trigger_index -= trigger_startpos; - if (trigger_index < 0) - { - qCritical() << __FUNCTION__ << " line:" << __LINE__ << " vec_value is error! read_sn_startpos:" << m_startpos; - } - else if (vec_value.size() > trigger_index) - { - //读复位标志满足 - if (vec_value.at(trigger_index) == m_value.toInt()) + // 修改读取多个命令 + //QMutexLocker locker(m_iomutex);; + QByteArray byte = readAll_cmd.toUtf8(); // 设置 从起始位开始读取的指令 + if (!finstcp_ptr->writeData(vec_mat, byte)) { - qCritical() << __FUNCTION__ << " line:" << __LINE__ << " 复位信号:" << rest_signal; - foreach(QString m_station_name, station_list.keys()) - for (int i = 0; i < station_list.value(m_station_name)->sndata_list.size(); i++) - { - QStringList cameraList; - cameraList.append("all"); - for (int i = 0; i < 10; i++) - station_list.value(m_station_name)->clearData("all", cameraList); - } - //完成清标志 - QByteArray send_byte = rest_signal_back.toUtf8(); - if (!finstcp_ptr->writeData(vec_mat, send_byte)) - { - qCritical() << __FUNCTION__ << "line:" << __LINE__ << " finstcp_ptr reciveData error! "; - return; - } + qCritical() << __FUNCTION__ << "line:" << __LINE__ << " finstcp_ptr reciveData error!"; } - } - //程序号;传到到主界面类,再进行切换 - if (!program_Num.isEmpty()) - { - QString m_startpos = program_Num;// .split("_")[0]; - //QString m_value = program_Num.split("_")[1]; + + // 读取到的信息解析 + QByteArray readByte; + if (!finstcp_ptr->readData(vec_mat, readByte)) + { + qCritical() << __FUNCTION__ << "line:" << __LINE__ << " finstcp_ptr sendData error!"; + } + + if (readByte.isEmpty()) + return; + QByteArray readsnByte = readByte; + QVector vec_value; + while (!readByte.isEmpty()) + { + QByteArray retByte = readByte.mid(0, 2); + readByte.remove(0, 2); + + QString msg = retByte.toHex(); + int number_tmp = msg.toInt(NULL, 16); + vec_value.push_back(number_tmp); + } + + QString m_startpos = rest_signal.split("_")[0]; + QString m_value = rest_signal.split("_")[1]; int trigger_index = m_startpos.mid(1, m_startpos.length() - 1).toInt(); trigger_index -= trigger_startpos; if (trigger_index < 0) @@ -289,20 +263,19 @@ void Logic_myiothread::run() else if (vec_value.size() > trigger_index) { //读复位标志满足 - if (vec_value.at(trigger_index) !=0) + if (vec_value.at(trigger_index) == m_value.toInt()) { - qCritical() << __FUNCTION__ << " line:" << __LINE__ << " 程序号:" << vec_value.at(trigger_index); - - dataPack m_data; - m_data.algorithmName = "程序号"; - m_data.cameraName = m_startpos; - m_data.byteArray = QByteArray::number(vec_value.at(trigger_index)); - m_data.retFlag = "algorithm"; - - QMutexLocker locker(sendProcess_mutex); - sendProcessTask.enqueue(m_data); + qCritical() << __FUNCTION__ << " line:" << __LINE__ << " 复位信号:" << rest_signal; + foreach(QString m_station_name, station_list.keys()) + for (int i = 0; i < station_list.value(m_station_name)->sndata_list.size(); i++) + { + QStringList cameraList; + cameraList.append("all"); + for (int i = 0; i < 10; i++) + station_list.value(m_station_name)->clearData("all", cameraList); + } //完成清标志 - QByteArray send_byte = program_Num_back.toUtf8(); + QByteArray send_byte = rest_signal_back.toUtf8(); if (!finstcp_ptr->writeData(vec_mat, send_byte)) { qCritical() << __FUNCTION__ << "line:" << __LINE__ << " finstcp_ptr reciveData error! "; @@ -310,10 +283,47 @@ void Logic_myiothread::run() } } } + //程序号;传到到主界面类,再进行切换 + if (!program_Num.isEmpty()) + { + QString m_startpos = program_Num;// .split("_")[0]; + //QString m_value = program_Num.split("_")[1]; + int trigger_index = m_startpos.mid(1, m_startpos.length() - 1).toInt(); + trigger_index -= trigger_startpos; + if (trigger_index < 0) + { + qCritical() << __FUNCTION__ << " line:" << __LINE__ << " vec_value is error! read_sn_startpos:" << m_startpos; + } + else if (vec_value.size() > trigger_index) + { + //读复位标志满足 + if (vec_value.at(trigger_index) != 0) + { + qCritical() << __FUNCTION__ << " line:" << __LINE__ << " 程序号:" << vec_value.at(trigger_index); + + dataPack m_data; + m_data.algorithmName = "程序号"; + m_data.cameraName = m_startpos; + m_data.byteArray = QByteArray::number(vec_value.at(trigger_index)); + m_data.retFlag = "algorithm"; + + QMutexLocker locker(sendProcess_mutex); + sendProcessTask.enqueue(m_data); + //完成清标志 + QByteArray send_byte = program_Num_back.toUtf8(); + if (!finstcp_ptr->writeData(vec_mat, send_byte)) + { + qCritical() << __FUNCTION__ << "line:" << __LINE__ << " finstcp_ptr reciveData error! "; + return; + } + } + } + } } } } } + // 写入 writeCommond(); @@ -362,8 +372,8 @@ void Logic_myiothread::reciveCommond() // 修改读取多个命令 //QMutexLocker locker ( m_iomutex ); m_iomutex->lock(); - QByteArray byteArray = readAll_cmd.toUtf8(); // 设置 从起始位开始读取的指令 - if ( !finstcp_ptr->writeData(vec_mat,byteArray) ) + QByteArray byte = readAll_cmd.toUtf8(); // 设置 从起始位开始读取的指令 + if ( !finstcp_ptr->writeData(vec_mat,byte) ) { qCritical() << __FUNCTION__ << "line:"<< __LINE__ << " finstcp_ptr reciveData error!"; } @@ -378,7 +388,7 @@ void Logic_myiothread::reciveCommond() stop = clock(); double ctime = stop - start; //if (ctime > 500) - // qCritical() << __FUNCTION__ << __LINE__ << "readAll_cmd ctime :" << ctime;//;127ms + //qCritical() << __FUNCTION__ << __LINE__ << "readAll_cmd ctime :" << ctime<<" m_stationName:"< vec_value, QByteArray byteArray) +void Logic_myiothread::readSnInfo(QVector vec_value, QByteArray byte) { QStringList keys = map_sn_area_array.keys(); //重新加载用 @@ -497,19 +507,19 @@ void Logic_myiothread::readSnInfo(QVector vec_value, QByteArray byteArray) // sn码防重入检查 QVector m_vec_sn_flag = map_read_sn_reentry_vector_flag.value(station_name); - if (m_vec_sn_flag.at(channel_index)) // false 添加sn码 true 已经添加过sn,不再重复添加 - { - // 清理当前sn码的触发信号 - QString m_signal = "write_short_" + m_startpos + "_0"; - QByteArray m_byte = m_signal.toUtf8(); - QMutexLocker locker(m_iomutex); - if (!finstcp_ptr->writeData(vec_mat, m_byte)) - { - qCritical() << __FUNCTION__ << " line:" << __LINE__ << " finstcp_ptr reciveData error! "; - return; - } - continue; - } + //if (m_vec_sn_flag.at(channel_index)) // false 添加sn码 true 已经添加过sn,不再重复添加 + //{ + // // 清理当前sn码的触发信号 + // QString m_signal = "write_short_" + m_startpos + "_0"; + // QByteArray m_byte = m_signal.toUtf8(); + // //QMutexLocker locker(m_iomutex);; + // if (!finstcp_ptr->writeData(vec_mat, m_byte)) + // { + // qCritical() << __FUNCTION__ << " line:" << __LINE__ << " finstcp_ptr reciveData error! "; + // return; + // } + // continue; + //} qCritical() << __FUNCTION__ << " line:" << __LINE__ << " m_vec_sn_flag:" << m_vec_sn_flag.at(channel_index); @@ -566,7 +576,7 @@ void Logic_myiothread::readSnInfo(QVector vec_value, QByteArray byteArray) for (int aaa = 0; aaa < read_datatime_list.size(); aaa++) { //SN为""时,返回配置文件的read_sn_error_send_format值 - QString datatime = getSn(read_sn_error_send_format, read_datatime_list[aaa].toString(), byteArray); + QString datatime = getSn(read_sn_error_send_format, read_datatime_list[aaa].toString(), byte); qDebug() << __FUNCTION__ << " line: " << __LINE__ << " channel_index: " << channel_index << " read_datatime_list: " << datatime; //sn_value = snHex(sn_value); // sn方向相反,重新做转换 @@ -638,7 +648,7 @@ void Logic_myiothread::readSnInfo(QVector vec_value, QByteArray byteArray) for (int aaa = 0; aaa < read_sn_list.size(); aaa++) { //SN为""时,返回配置文件的read_sn_error_send_format值 - QString sn_value = getSn(read_sn_error_send_format, read_sn_list[aaa].toString(), byteArray); + QString sn_value = getSn(read_sn_error_send_format, read_sn_list[aaa].toString(), byte); qDebug() << __FUNCTION__ << " line: " << __LINE__ << " channel_index: " << channel_index << " sn_value: " << sn_value; //sn_value = snHex(sn_value); // sn方向相反,重新做转换 //异常 @@ -668,35 +678,72 @@ void Logic_myiothread::readSnInfo(QVector vec_value, QByteArray byteArray) - // 清理当前区域数据 - QString clear_SN = obj.value("读SN后-清0").toString(); - if (!clear_SN.isEmpty()) + //// 清理当前区域数据 + //QString clear_SN = obj.value("读SN后-清0").toString(); + //if (!clear_SN.isEmpty()) + //{ + // QStringList mycmdHead = clear_SN.split("_"); + // for (int aaa = 0; aaa < read_sn_list.size(); aaa++) + // { + // QString sn_area = read_sn_list.at(aaa).toString(); + // QString start_pos = sn_area.split("_")[0]; + // int lenght = sn_area.split("_")[1].toInt(); + // QString m_signal = nullptr; + // //SN清空 + // for (auto yyy = 0; yyy < (lenght+1)/2; yyy++) + // { + // m_signal += mycmdHead[2]; + // if (yyy != ((lenght + 1) / 2 - 1)) + // m_signal += ","; + // } + // m_signal = mycmdHead[0] + "_" + mycmdHead[1] + "_" + start_pos + "_" + m_signal;// QString("write_short_%1_%2").arg(start_pos).arg(m_signal); + // QByteArray m_byte = m_signal.toUtf8(); + // //QMutexLocker locker(m_iomutex);; + // if (!finstcp_ptr->writeData(vec_mat, m_byte)) + // { + // qCritical() << __FUNCTION__ << " line:" << __LINE__ << " finstcp_ptr reciveData error! "; + // return; + // } + // } + //} + + if (ifReadSnErr == true) { - QStringList mycmdHead = clear_SN.split("_"); - for (int aaa = 0; aaa < read_sn_list.size(); aaa++) + QStringList snOKCmdList = obj.value("读SN异常-回复指令").toString().split("#"); + if (!snOKCmdList.isEmpty()) { - QString sn_area = read_sn_list.at(aaa).toString(); - QString start_pos = sn_area.split("_")[0]; - int lenght = sn_area.split("_")[1].toInt(); - QString m_signal = nullptr; - //SN清空 - for (auto yyy = 0; yyy < (lenght+1)/2; yyy++) + for (int s = 0; s < snOKCmdList.size(); s++) { - m_signal += mycmdHead[2]; - if (yyy != ((lenght + 1) / 2 - 1)) - m_signal += ","; - } - m_signal = mycmdHead[0] + "_" + mycmdHead[1] + "_" + start_pos + "_" + m_signal;// QString("write_short_%1_%2").arg(start_pos).arg(m_signal); - QByteArray m_byte = m_signal.toUtf8(); - QMutexLocker locker(m_iomutex); - if (!finstcp_ptr->writeData(vec_mat, m_byte)) - { - qCritical() << __FUNCTION__ << " line:" << __LINE__ << " finstcp_ptr reciveData error! "; - return; + //snOKCmd = CmdHeadShort + snOKCmd; + QByteArray ok_byte = snOKCmdList[s].toUtf8(); + if (!finstcp_ptr->writeData(vec_mat, ok_byte)) + { + qCritical() << __FUNCTION__ << " line:" << __LINE__ << " finstcp_ptr reciveData error! "; + return; + } + } } } - + else + { + QStringList snOKCmdList = obj.value("读SN正常-回复指令").toString().split("#"); + if (!snOKCmdList.isEmpty()) + { + for (int s = 0; s < snOKCmdList.size(); s++) + { + //snOKCmd = CmdHeadShort + snOKCmd; + QByteArray ok_byte = snOKCmdList[s].toUtf8(); + if (!finstcp_ptr->writeData(vec_mat, ok_byte)) + { + qCritical() << __FUNCTION__ << " line:" << __LINE__ << " finstcp_ptr reciveData error! "; + return; + } + + } + } + } + // 清理当前sn码的触发信号 QString m_signal = "write_short_" + m_startpos + "_0"; QByteArray m_byte = m_signal.toUtf8(); @@ -706,38 +753,6 @@ void Logic_myiothread::readSnInfo(QVector vec_value, QByteArray byteArray) qCritical() << __FUNCTION__ << " line:" << __LINE__ << " finstcp_ptr reciveData error! "; return; } - - - - if (ifReadSnErr == true) - { - QString snErrCmd = obj.value("读SN异常-回复指令").toString(); - if (!snErrCmd.isEmpty()) - { - //snErrCmd = CmdHeadShort + snErrCmd; - QByteArray ok_byte = snErrCmd.toUtf8(); - if (!finstcp_ptr->writeData(vec_mat, ok_byte)) - { - qCritical() << __FUNCTION__ << " line:" << __LINE__ << " finstcp_ptr reciveData error! "; - return; - } - } - } - else - { - // snOKCmd - QString snOKCmd = obj.value("读SN正常-回复指令").toString(); - if (!snOKCmd.isEmpty()) - { - //snOKCmd = CmdHeadShort + snOKCmd; - QByteArray ok_byte = snOKCmd.toUtf8(); - if (!finstcp_ptr->writeData(vec_mat, ok_byte)) - { - qCritical() << __FUNCTION__ << " line:" << __LINE__ << " finstcp_ptr reciveData error! "; - return; - } - } - } } else if ( vec_value.at(trigger_index) == 0 ){ //读到PLC标志为0时 // 更改防重入标识符 @@ -873,7 +888,7 @@ QString Logic_myiothread::snHex(QString sn) return resultStr; } //SN为""时,返回配置文件的"读SN异常-插值" -QString Logic_myiothread::getSn(QString errorinfo,QString area,QByteArray byteArray) +QString Logic_myiothread::getSn(QString errorinfo,QString area,QByteArray byte) { QString m_startpos = area.split("_")[0]; QString lenght = area.split("_")[1]; @@ -881,7 +896,7 @@ QString Logic_myiothread::getSn(QString errorinfo,QString area,QByteArray byteAr int start_index = m_startpos.mid(1,m_startpos.length()-1).toInt(); start_index -= trigger_startpos; - QByteArray snByte = byteArray.mid(start_index*2,lenght.toInt()); + QByteArray snByte = byte.mid(start_index*2,lenght.toInt()); QString sn = snByte; if ( sn.contains("\n\r") ) @@ -1082,14 +1097,14 @@ void Logic_myiothread::checkTriggerCamera(QVector vec_value) QStringList myCmdHead = m_pack.clear_camera_startpos_flag.split("_"); clear_signal = myCmdHead[0]+"_"+ myCmdHead[1] +"_" + clear_signal + +"_" + myCmdHead[2]; QByteArray m_byte = clear_signal.toUtf8(); - QMutexLocker locker(m_iomutex); - if ( !finstcp_ptr->writeData(vec_mat,m_byte) ) + ////QMutexLocker locker(m_iomutex);; + /*if ( !finstcp_ptr->writeData(vec_mat,m_byte) ) { qCritical() << __FUNCTION__ << " line:"<< __LINE__ << " finstcp_ptr reciveData error! "; return; - } + }*/ } - if ( vec_value.at(trigger_index) == m_value.toInt() && m_pack.trigger_reentry_signal == 0 ) + if ( vec_value.at(trigger_index) == m_value.toInt() )//&& m_pack.trigger_reentry_signal == 0 ) { qDebug() << __FUNCTION__ << " line:" << __LINE__ << "trigger_signal: " << trigger_signal; @@ -1189,7 +1204,7 @@ void Logic_myiothread::checkTriggerAlgorithm(QVector vec_value) } } if (vec_value.at(trigger_index) == m_value.toInt() ) - if(m_pack.trigger_reentry_signal == 0) + //if(m_pack.trigger_reentry_signal == 0) { qDebug() << __FUNCTION__ << " line:" << __LINE__ << "trigger_signal: " << trigger_signal; @@ -1258,8 +1273,8 @@ void Logic_myiothread::checkTriggerAlgorithm(QVector vec_value) //} } - else - qDebug() << __FUNCTION__ << " line:" << __LINE__ << "trigger_signal: " << trigger_signal << " m_pack.trigger_reentry_signal != 0"; + //else + // qDebug() << __FUNCTION__ << " line:" << __LINE__ << "trigger_signal: " << trigger_signal << " m_pack.trigger_reentry_signal != 0"; } } } @@ -1741,7 +1756,7 @@ QByteArray runAndCheck_cameraThread::checkCamerasFinish_feedbackSignal(trigger_s QByteArray send_byte = send_msg.toUtf8(); return send_byte; - /*QMutexLocker locker(m_iomutex); + /*//QMutexLocker locker(m_iomutex);; if (!finstcp_ptr->writeData(vec_mat, send_byte)) { qCritical() << __FUNCTION__ << "line:" << __LINE__ << " finstcp_ptr reciveData error! "; diff --git a/BaseModules/Hd_LogicDll_module/Logic_myiothread.h b/BaseModules/Hd_LogicDll_module/Logic_myiothread.h index b3b38ef..e7b83e9 100644 --- a/BaseModules/Hd_LogicDll_module/Logic_myiothread.h +++ b/BaseModules/Hd_LogicDll_module/Logic_myiothread.h @@ -181,6 +181,7 @@ private: QQueue< dataPack> sendProcessTask; QByteArray readsnByte ; QVector vec_value; + clock_t heart_start,heart_stop; signals: }; diff --git a/configBackup/HanddleAI.exe b/configBackup/HanddleAI.exe new file mode 100644 index 0000000000000000000000000000000000000000..444571c08b713f0e92ae019ba8eeac60fee0a0f4 GIT binary patch literal 1677312 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 z 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℞yQmp`tkZJ%9!%fsN2MFQL8_l)yB4a?V~^33R|n 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�%-OD) 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�Oyunub?=98`{G;Qep~nuU+S!KYCU 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 S`V{C>pihB51^zQr;NJke!MuO~ literal 0 HcmV?d00001 diff --git a/doc/三协地址表/一次注液地址表.xlsx b/doc/三协地址表/一次注液地址表.xlsx index 0b8ffe2cde81286af1d9a8f784dc52b7ec2c5a9a..49e5d417357115aad47ac9cd497a1e0ace2f1ba7 100644 GIT binary patch delta 7149 zcmc&(Ra9Kvl5QkeovO3;SG&gRhINH#fa`)TR2U5el0*lANI)Qv zgQvZYkEfR}uf3;_BTv9%_t59M>OFkq(JS|E2Qq5SLA$V?&S%w zOnBTbSMBX89P{VXb+Z zG*$8N;@Rc^+jJ7`V-aAy5K`4og0|{S1lg~zsddX8 zma@LN94JhE+4=d`95M4>Z+`k;e;3Nn<@DWF162@S15Jyu{#8D&WR?%Pc-{%zyWu9+ z!=K3Z>cSXc;j!;`VgKg%ou@0QN~i% z#3sf(lQi-M@}O!`VZU3$Dtw1TOCxj zR zMZVi0h4v8Hy-hx{+etUtDQ>Qr0)k8Dn>R{yLTI9z;%w-kQq+}Lo>$0juxDTspeT}1 zbTHx(OjF=N10c0u-glp2`Ck1pP*+DoQmckm_RrMulMN#RHTcRNm6GI#Pa?P+?CAg@!`o* z>M;e>udsGTY_yWPl8>v0sX{TMn2dnB@46^?^bdXE+wQVZ`~9>uo$MOIqn4Zz`vVAC&1|MJW!j;&v@t2x z<&dDf^K*gzqSVq#d+5aVubkfL_!9}ca^-v_gozNroQT>F`iqSp6Isr7-N}!O_@;6;r_x{4~AyMhi(BN7g=zBLzQurd1WE+lWUzJ z5o`T{NS^i+QU%xq;r*~w?1h7pG(wXA4HwQP+&A8gFK;iPLnp`s-{7p3Ol)U}+eDEb z751;Oub*A1uhmP^8uJenm>uG)-#ew8^o5lt3E~pG%C%!fyA^e^?h=jc?ojq->8xC% zykD~Zm#UHubA#y*kE;KW#>!CdZX@101#xh=7iY!M7*}Xo| zPL{m(TDj0c9-7!qabvE^f}vH#@^h+VCPnN0@vKi_!bg#MIm1fz$g#f76VVU!zXGXZ z0Dc#dMUkdk>r_ed)NaLNlf4!CM*kwi=*^_F_WS~F6+u5M!kN&_p3z2`PJgX_SNS>l zz*|}npvOe1Blh-0TB(+#ncC0E z&maGWlV2EjlV33Y$ya+1(gAy0($9veWvYy+FH}DmNKUhbON1c2#!;Rcn@)D}Lp8dQ zIl7*dRX5@@Gf%6f0=wi-7?)-){B-K9gwes>0D)}V&I}`mXe13LtFuYuqEfk4hAu%w zgJ6xUju4wLPVR*(L4<|Vop2d=Cs4Ajmke4@GrFW03FG*f&M*%2)yj@*cxv>vCBIEq z7|1X~t;WAk$B|&s4IO;j7RDWAerQ2n(HSp_L!BL$=OE%*|F`yEW*qMfNIAJBuK@@3E@QKxJ~;+31{}Yh4~c|;$>19Gd_71yFc=Q6 zuR|hfz@3z8{@l1P+L7nRql{D6H4iX;KC-MI??-~b^6;cOzE4O@us(dGj;|ky4pxU( z)zy89sEyXMRF9~sl-k~Y93ppNbwAFB%b}nAT$acEOKpWz5OzZT1SXVgs zYVr(=&b`4#I}2?^+0~=Z4?A-d3l+W>`MjMHuFt8l^N`F74=#0ol~2ny$6dsxV3D6K zfoMDq75ZvD+tf5o_lENNS)(*vCnR-swpwd}eh@+>5f`=pLWCAZH8;5T8KVOL{d0fc z3^^~wYQJmnt{8W%h#C<1{pU^0Sy z{qlM_WsCN$ejCD=VaxA>K>i@CSr#yzP zx}cIwsdj@IzGCFLLeBh4ej6=LF@k{gD1I@SxcIPpAgvgK_94I>#0-1gN!A^hrYY{w z6p*#W5cPcMB*$yRx~HqzP}sem9^WJvO5araRvI-F9eqCgAz>y!OsO`pkSuxeVzNAPz4tA#NclU!< z9yBH((5h?hjRQ_NQBGW{Clx9WytWh#g*dgm+k^fp=Dv7Ck=i$PQ*MLL&YyP}oEnf# zW1XA6MTR3ZHMyCSRD?bIY&sr^JR*B3N?N(jYPJ2o3Hr29czj5966=ijtB&=Fu=S%A zuPgkDJy^}Q;}d@aG3tbbg8kJ>R6#?ytILLU;FHmuB5kwM?D4W)3g_Tb(L~n04K+E7 z7ZUF`s}xIF1OHmaAV?A0=~}6jKE9`5xNT_B+2qUmbbC-;5%HF~Sv?~=VS~B+2K|5I z`ww^#pSkV<|2}m8fD8Ql(ES50@b5$S54e*5FLWEb39PX2_TLg|#NdHI7J3Lr2oo?h zS1(zZ*dj>V(CAjKSI)_*qVkOCD9L#SX-`D2-EM9GV>qK&m`Zo76G&J7rSE*K2FfZu-AlM4>Zf;ngsM@hLFcZ9{2># ziZxtLdkr(p(l72@$gbe635mjqu)`nw$Hu)q$`n>Ce{q?)F&NeJfF?sc z46unF3*Qi5!~Kg@{d(-&Ew+%s1e@n=5FLcySv22v>8W_QG%9$FvX1kzqY#*^cNQ{m z`_|R@jqwO_qBTi-HX0_HA$~IeHg71jNFOMeY4_57!D{EXa1=rFpzKJ+*s9G(u?^Od zkOCOkeeS%Te9q8m#w7hS{%AR4(+8gLty1%pRpIvb1S)3JH?n9~Hnzw@*IgvW7S#V+AC^{n=j9HEVf3oXuq&bsW`GH>@^ZHeLYRq2?in%5UzMB5HIzB4v z*jJT(M&ol>k}H$zN}`q4HFV;I{3$@{VpVwr13%uRrp*1h!elAV9#+|SSca!R#wOLz zw>?sxNU%U>t3=D$EeDu)TiCwaJ>gD7zSCJvOfrMRy;ALQu9^G&5gz;o96pY3a4k{e zgc4*P>J!Jw2sBid1Vr;Co3T-kRm|#jL zli;iAB^P6-RkcV(Me)vVgT4$4py*`u?JOqe`NvE?!IK$Mr^RlwFt?g&v5};!cTs=T zGg%g=C8dC_wQn}{g&VFQGr(>8iA-zQbF|K?ZhC%Xz*_y!#%V%3sIIAD`tLYOH#7Kx z^y5h4UtL7)b%gASZt4~2J;pwd-|WnH5M!l>`vydX$pg<~UW7rALtnKT_e^3to!h)j zQef-W3b^2aI-{BN9%d7_MD~Je-EC!Hn9>oY(<^yuT7_W*J=N6_oEA7WwHsl59Iy1_ zJN+_z4xKD&bv@o!(*rDWF3ljuDNc`82#h(oMf+xl&72SQ572YiU;b8CaPB}kTatF zuHJ=a7js!IQIz|=MABl+O{5mcTWi3qyz11 z{*j;V*`N3Vp;HhU38EGY4-*~_T`1YNh;#T zQ=R*;x0xDkGG+D{O;KigI^1({zCF~f{Oq^~HBHgJt(!qO(O=U0Sd9z7m8`}!;4)SY zghL6^h@LPjnp=`4ad>^2UP*m(W_{~!AsBCHeHWV?;O$0K>F5o(5g~YOd9T@4|EJcC z=x?84wL2@aV>~*lrt>;8%9isw66@dtSYzdhLvo>MVXfsOe=G4r%O^SX7i@**#YpGb2ip2{>tZr^!}?}@J#wYbVO#4B>pIHWVHy0T#WXZ5bjdx(VW1dVGoj|FHu+f!-?3=yix&2A-VKt zvmBDk0+QUmCr2MG^E(;93I*(Hpwq&LfCA~8y`L>d+BaU}7vGQg@9&NQe14mcf50@^ z849dIuKMr3oN@scxgSN+zc4fM7Q=egdjtzInmK#1N!ZcSRi4NsnpCAA-zqA6cTwoI zSD=XDW{OZ|W}>I(W9R*Dr+}HNq#z+Rz~wR7Ee<>ZLLSIsn+e&%BXZEg=@fi^1u{h| zW8yC;vN!{Q-sgk;+k@Em)XshZKiv!!>3VR+ccSA!d0b#W1s>3NQCEkNpaIz9vD~WIJzykV+k12D?uMz06~t|SRGUWpK0Bhc z?dQ;6>5R*GMW_QbYs>e}K=R^uC7(vt$&I767GK6+6Z)RwEmy>iE`z9_{wOvols;&K zPc1YQr`Ec=RtPUY^Q!TBslC3%^HEt$!ve<+#d|Y>iub`~70b&@3xWiS`twIJ4&%;L zEvbgrK1Cu1Ne!}6A8{UjHw+ElMq(334$P`t?4iumowVY9say)Y<k2O+v(lt8q;rdp2-`7(GJnzX8gm|}RO`6YTC7X^aefBZ6M zYQ$i-hBJcHj+g{JUZv1iOn^vPUgyJYgdwQ>P0fu&DP84mXzWGA&UtDpC z#Ir9kDdd~_OZKx|ZC4MrZp#YBo)VM3VSGdGX!Jyb7H!Z+J#O13cSTR`JP4NuKiq%@ zLeor;47v7*wtQf6nIO63CcrOr0cP+KT6F5KPF-GJJr6IS3qhT4;2F6oIGZ=km%LLG zpjzq}Z|C(2BR&wp9#yBIX9M2fo=orsd|cf7DC{zO(Rc0ByZiN);)A5w&M`08V=7=^ z`~85nDko2|=fg;?hx|P=zXV!c%tER|q#;4H#E|_@Taiv%6zAKMV~V%J5C;7h7XeG# zO~VzRvrNjzvRiI{NdWISG2d*ciu_l`P10vwBO}CvJm@e$E z0hspI`ccT%?%Y8==Y;lap)4lka#vqmyn&O&KJ!&zo+w#TQ!&%4GIBVwR%2t~qMxWy zsUnL(ual9HSR5J6f0jX9Kv`81#OTJh%9>SCf~E0}z1=9usoiG8fR(!akf5A{s?|Qb zLW)k{bKp>>fTV#&c8WrMIt_<4)raW-Kx#N}@QI~z-1Hf9^~*#1cwNiR>H6qmz)b7TjhvWie*2(TrjI0A778AMS?+w$g zq-sxHs81^kj3f;8h8OYmOrLuc7-y|%s?d(U72^LjFaA`3Gh@7+&bE)WP>sNM@1W2C zEJb%qTl1swu4kCB`!^o9G1ZQ33jUJ_QVM0PM}LLA5&kCpB$H|76+(4K-r00WXJ`2@ zz}dW5Ya^ht$C_ZkDRr~^h^yA zb-tZs+b^uyo1gfyvQhiIP9OgiMPmu;AR77$7Q|zAY4jr~qJ~|7h>QsYvi5Ow_vPjJ zy&_0BIT6$x=D7bopF)Ikh|vA(9ObT%KxiPwyA_3w_{<@Vri~zi@u5FtM##cw|IW7! zj1t|B84&=3)BSTB{q6f--Zb=gO_h!PAA|r1MDX|ie};Fxo7&u!tgm07yQ42+m4gw% z%}Izxjga6JL6brFa(@}GC*(%?h+h=hu{`u2mzLS z-|qhV|L5#p?9JZnd(o#($(#v=^q%@<{^SxeoOdjBO)LuAt4|TA|N2VbhFj+ zbaVIOwRQ8f<9X})Dkxc2rH_w1{N|l6`_ktZD-_dHJ~DO&co+r%Uxr(UlEq?{XrEo2 zEt1uJRI`{t!f$@4&vP|sv{zBS1UzQkbTJo&b9I}ry^_XICJJ&ysv2I- zn_uB9#96{9HlmUwxqA3}xOzE1Sl-CbGN7I&U&Zs7hHQ|lBz>stu_oAZt3l-+&quDR z|DGCdKL5Iu=S0Z#tZ}i8tYj}<{VR(4>VW$#ST0ahRMf@r3cK+j26@EbK6Pv{y28^W zM8wRV&NtERX7VHu?0*{=qN)g zQiPn!kp4U2>eo_-q4lHZ(jFU7WNFHsmx(D1@!Q;6Xi1GN;NYNZR4r9x6u^_OF%Tlr zHMV5Nc~OU;Xvhq@vMvxlz~Ct)C^9KPEiS%Ffm@Ixj>f=f;gBG{>O(YhohilLiRyl9 zT`$kd`8oLa+Gz(_jYT9ab+}M&3g)FGQfN}6vsjDf#@8l!Y>c?7m%3L_e`HFqtu9@k z7R6-$3`^CFoSk{ujZvekVXWEQSNh`q)FgrhXq~gnHW{A9+tH$X&U)>urHP}a(&_z@ zbGF|o%RN5oNb8;hKXV8p90@&kh^6JU3C0PH2|&+BMjg%D<@oZlfhhHqs|PoU_;@R7 zjpHTNZayIK%W0mw^M0dToiFSX7iB+Q@7-dH;oJVE8Gs+0X=ZOYdky+Z4`ig)i(1x* zZhzB_-i1|G8F(i-qX{hk#kRSgjQ;|VGXi3pwOhO8Me82xvO zK?3ggj?S~ByO`5%jr=#UK5+*@R`zwH*Odg;PF~S*#Qbc`XSM6w4Ejub9PN!jEjk4MA`XFA$shtQo4PuRiAd{&-8ZXsZQXj#G&YH zt-oaRBms0DRz@fsit=BnwEG5lilV~J6$z;rh-37wWdpob2&w$M!HR^H{H0MrEAEn0 z?--5jUJz1=2G51igDa^BcHrtyoi?GSbX>#ar45k;(R-Mb#4%`t^F0a9ywNwiYcT>h z=wn1a(GCI_@Cu_KP1Yd7oJODmwcgzG7^^hVCqfAOiC}pmj5%W#9j9HMwCjZcJsc}Y zKpH*FS!(d?ZNI}GG?LJ4Yihk-xfmnI040Ej7H%RCB%wfvK6e(zD3YlAWEbJ^Wakyr z{7HrMiBOGc9^&JSu@bHXZWVGYX`xiS!Y;nlW6}CK`;FHh3*K7l{xtX3tV~Y>i&YaU z!SEnZFw^TLj@hVGf3l#=(?+Qn18#u}M@*h@fCfX=Jg4GGh^yedyH8VxLa_9^xCVZ@ld9^wRxI}`=}h*t~}Sp`Wv%c*_n_> za>V~qMxLsO;8oB5=chvM0M)`|0IR#r@;xn%%D>S^Zw8FnQ>#++91S@|==B@Am$KD} zTwD|D*wjaB20gNl3%^h4?)Lg!PQblAemV*SAkYDpQ)=pSp4SQrjrg!UdUUnH`;6(G zsLG~6!};`Q*$2njHu7K$NrXD(+JYU)(r3!A${jK+_4bn`!=}S4 znJ_d@7mh}8ncHl(btPlQ*qVgs3v!oNF0Kt@@+sF<#Zw|Oq%`bT*h>`nA7Zj z*Lg6~IDM1WU?|7l#)5mNDvqaCA_58p!(wu*>Gk zfv&~8(D(6%L8y~i+5BF!+2N8u#DCo7io&Q|r6$DY@wne+!NkBG3)D8+^JAvKm1<}t z{>ge7VQg$zV~WOvW3EI&&Z_}oH~AcFY-frZXcNIV+?CyNp>d+lbYCE3%)sJhbjX6u z%I>#!tlVoQdM{~KymGw7Rdp0A?bmFP0%^{U>n^nu*Gv_@B=r$$ZY%f2!a9EmXqVE> zCDtT!Zw*y%RpfxFCG~4Gt9JuNC)a1QGYo%{wSs8WMts{m0~zsuy{-Q3$$*cp_?nL^ zUo+z?lc;~V;bVnHLPS@>HE9O1Xx9D5UpAIB36C`)=P$u{nt~EO-a{9f&_g24jGLfYq4C-gFN;rsUYS-qok(`8UHmCHsqK>~xU-Xx77=QQWn5FWu>C z!SqOURwszNcsD&q6gDReyRd3I9L7>n_i zDkG?`DR#^8BggpjYSYvbScpqlv@1WL?HuM9QbvMfny&VuK2QL6g%lMN6+HJaLzo-Qjgr{6ppQk<|v=Lf7Ckz_`AnY2Bl} zsN^?<%D#+26*6@pmVOxEqbmh&M8BB(<`!)0K#*=AsnQtQPxPQ%pf8O}ZU zAj|d9iW}bjSsKx8k7nR$33G<6HkYMq7B9oE(*^utL{9r%Qcmw()|MpI=#d7ZJ7~Zcq6os^6l;yhR=#{WiP&8jYsV(6b&{>ia>C zmMiLAXPwP7<|xZz1a{=i@3hlyCdCR&){YHFJ@LT#0N!bSJ;NP=rSRkh88XQR zhl_nou{o^Ky@HM>N&w)y3i$ zQ6((YX};QPT5zAN9AnQhYylXvS2UOm4d@R!H{#eT)C&+lfDM=qO-Sym6b&kTteWr) zn6Q(yEpsa&lD11CarIcQNuD-w4oBLcQL^1xv>GJ+rE+21X9n&Xa12nf6YB6Vtgz_6ni`c40>7m7v|C5B8OIyRg1Y)n%gi zlN*7{$a3Qn1sH(BXPoGzv9N0Lf+C*`V1F@EvTYkD-~~PO86u|i7x^YCULd2>PccfL zeQ)!!L;Whnz`TX_MLfKOZrelp{llbBRbvkAL}gYG+*br zKEHuW2o}yDrhRg4JMq@z4_;IsNls{z&Uy3x9-~$lrAohu8-I_W#G^<~$A4(}B;mW5 zlEvh;73wM;s5E|la>d;lT|_${{HApA;BBNVspas&%{N`*9ozjK9K86VWPP6K7^shJweJK-LONJ4a^T(4k@_N{^oP&cF z#T$@`-Bt=+QL8qlU?c)Oing<3LaMf`4DZ^UKq%cCdTCp>Jh|Kq*3YEE!7cr`KY?mc z*USOFZJ0G>?@qXuEyB6Ps%MLJOS3|_S}Jx-5d+R@KL?1CGm2POA7##~qIsDT!IX!% z<{guhO1Qj`()aK0v=wMVFycR;>tlJ&{YtgLk|>=uk?fy!cgMQ|>pk9ze=()9sJa)b%u3ZW{3P2 z?i2IhZ8-nP`#9arrj~o1jaQd@6$6hOOUJ55po0GPex3ehbAJ290ZVrNJK1kvhx_!l z7=e;(A6{lEryp+e(+Z?GHNd%OxdwiW^;L~SYbt)#s0YO0_9gLvo(Cj4JQ@GbHp24BMJVYGV_-Ca`}xe zt)w5n-z6>bRByrdmk5Iy>X2ico(}QJ{57hM$Jp4!U}7ku0R{gBo`1VHYs&N6g`#O_ z{vZm5g&tn8v6IO}th59&!*&-77^JmTAOIiFcFH0wT1iaJ@0-z5O4ZrQ5G?^l`{Upq zkm^wWw(rIn?>eo$&xfmi$WJo54&nDDO5fO25^s1l zN2wow@{&2w4IpW2Mi6x~7t>on2f?)Wzk1J4CkE&q1xw_Dup<)M{iQyF_u)`jtR|RF zcLP%+LVoXIxM)(Q<@{KwT|nYk*{K2)NZ>(4A1$EYP}q0C9%mwtlBg&zp{QrQ$jJCs zfN^URk$4A*S5f}VQNC{*((WciQ#lN~D{8|Oo5Dh~CB#`l^&}Wx%7_Ng67ofmCg(iv z_uoRo!UjiO|W=tfWz-$Lrm^OY;|&Wq+1FT32a$NCFaT{oX%l; zBi&AxwBnXmZ!2YlO$ihvvvI+RbbIL7i?j7hXPM;~ z&sg}_oH8i!D`N5t`#n#m%4Q0PXz6O0K|8=ImBUG3J!8-(<2u8v9!jTO5G;N~Z&~ zbOs&@mux{2`qNnm)uPtnmm~HwtiG^Ws!MJ`v{$VJuriB+S8vA-K!02Q!OK1%8A1Eq zOUWW%-OY(mH^kW;V@Kcjs@#yBiWauhM&9xh%dVH{Gl%@^zgR8$ab{wB;nhJ=QiqW@ zAK8Kex(x?UOyq>ylUHAjfG^>9aD9rX;LBO632x~=t}K4ZVB8J^)O$d;2o8lMRd<`# z87D4sDX=T3)=>BwU#)6Z>zb0K!^Tim(c7&{Z_YH}?yjW3QRR>(3g;Kv)^&8b<%u{X zMq6m;Gl8{ud$}9F8JyCZfPxAL&b4qE8N<}3bFxHh9DZDkx}d*BRop&#L`b59VKO=( z;wik1^1gdIsLUcGAW$Me-Px(Z9nc=;mCwOy)MN1SYp=`{kY_SRG% zUV4+Dn>1858#K&QK-SB<`S{4S`R!r0af?b)aDqd*kQ`ir{uCa_6zbTwf5ivvsRNZd90&`Ftt@J<9Bk(zqu-0f}j7<$N-B zfaeh^rJF=?S`F`it;wGe%LLc`v^GTy@pxiJbAV8(qNuiyrlt@%e z&}G&X%>R6cgL<Kqi5%vT>lhJe>odt_+}^Kx!zE9S=#487j(7 zMg7lSe{%oRhloJ`)H*Xi#ej?YU#}hhp+E?LHnX!*|Km)7fPni)`t<#cpiU0`#V(52 z0~G)YA?`t4fUMO2dMf>gvIHr#3Mh^k2i*rUQ2pb*1_6QmFU0@AY=*LMa8mu}ZRJz0 X{ImQA)a8Ga&qC`sIMHO;{($})*)))= diff --git a/doc/三协地址表/软连接3-2地址表.xlsx b/doc/三协地址表/软连接3-2地址表.xlsx index 557423ff5a14a3198aa1b231637303e1da33a588..9eb8544fa5e8ba587493faba9e5b1bc8a90077f9 100644 GIT binary patch delta 6002 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 delta 5894 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