From 8c8dac0c2da659e6ba10ec2931f2a3acef650e5b Mon Sep 17 00:00:00 2001 From: RCi <15089880081@163.com> Date: Mon, 14 Jul 2025 01:17:55 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A8=B3=E5=AE=9A=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src.zip | Bin 1349626 -> 1350720 bytes src/core/back/summaryData.h | 85 ++++++++------ .../GUI/front/pages/summary_data_page.h | 107 ++++++++++++++++-- src/mission/952_15_H_25D/952_15_H_25D.h | 9 +- src/mission/952_15_Q_2D3D/952_15_Q_2D3D.h | 12 +- 5 files changed, 165 insertions(+), 48 deletions(-) diff --git a/src.zip b/src.zip index 46774e3768f45012444eeeb3d58b2c464585a2bd..09f88f43351e2bddb640c232d268cf219b4d259e 100644 GIT binary patch delta 37825 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 Tf~rFXYou0&#~rNk{?z{fGzygD diff --git a/src/core/back/summaryData.h b/src/core/back/summaryData.h index 3a16888..1a32039 100644 --- a/src/core/back/summaryData.h +++ b/src/core/back/summaryData.h @@ -1,44 +1,57 @@ +#pragma once #include +#include #include -#include -#include -#include +#include +#include template -class summaryData{ +class summaryData { public: - summaryData(){ + summaryData() {} + + summaryDataTemplate* get(const std::string& sn) { + QMutexLocker locker(&_mutex); + + cleanOldest(100); + + auto it = map.find(sn); + if (it != map.end()) { + return &(it->second.first); + } + + order.push_back(sn); + auto list_it = std::prev(order.end()); + map.emplace(sn, std::make_pair(summaryDataTemplate(), list_it)); + + return &(map.find(sn)->second.first); + } + + bool remove(const std::string& sn) { + QMutexLocker locker(&_mutex); + + auto it = map.find(sn); + if (it != map.end()) { + order.erase(it->second.second); + map.erase(it); + return true; + } + return false; + } - } - void cleanAbove(int num){ - std::lock_guardlocker(_mutex); - for (auto it = map.end(); map.size() > num ; it--){ - map.erase(it); - } - - } - - summaryDataTemplate* get(std::string sn){ - cleanAbove(100); - std::lock_guardlocker(_mutex); - auto it = map.find(sn); - if (it != map.end()) { - return &it->second; - } - map.insert(std::make_pair(sn, summaryDataTemplate())); - return &map.find(sn)->second; - } - bool remove(std::string sn) { - std::lock_guardlocker(_mutex); - auto it = map.find(sn); - if (it != map.end()) { - map.erase(it); - return true; - } - return false; - } private: - std::unordered_map map; - std::mutex _mutex; + void cleanOldest(int num) { + while (map.size() > num) { + const std::string& oldest_sn = order.front(); + auto it = map.find(oldest_sn); + if (it != map.end()) { + map.erase(it); + } + order.pop_front(); + } + } + + std::unordered_map::iterator>> map; + std::list order; + QMutex _mutex; }; -#pragma once \ No newline at end of file diff --git a/src/launcher/GUI/front/pages/summary_data_page.h b/src/launcher/GUI/front/pages/summary_data_page.h index 6b953a0..2268e9e 100644 --- a/src/launcher/GUI/front/pages/summary_data_page.h +++ b/src/launcher/GUI/front/pages/summary_data_page.h @@ -43,14 +43,14 @@ public: // 主蓝色曲线 m_plot->addGraph(); - m_plot->graph(0)->setPen(QPen(Qt::blue, 2)); + m_plot->graph(0)->setPen(QPen(QColor(0,191,255), 3)); m_plot->graph(0)->setScatterStyle(QCPScatterStyle::ssNone); // 新增红色点图层 m_plot->addGraph(); m_plot->graph(1)->setLineStyle(QCPGraph::lsNone); m_plot->graph(1)->setScatterStyle( - QCPScatterStyle(QCPScatterStyle::ssDisc, QPen(Qt::red), QBrush(Qt::red), 6) + QCPScatterStyle(QCPScatterStyle::ssDisc, QPen(Qt::red), QBrush(Qt::red), 5) ); m_plot->xAxis->setBasePen(QPen(Qt::white, 2)); // 坐标轴线 m_plot->yAxis->setBasePen(QPen(Qt::white, 2)); @@ -67,7 +67,30 @@ public: m_plot->xAxis->setLabelColor(Qt::white); // "时间" / "数值" 文字 m_plot->yAxis->setLabelColor(Qt::white); - m_plot->yAxis->setRange(m_limitLow - 1, m_limitHigh + 1); + m_plot->yAxis->setRange(m_limitLow - 2, m_limitHigh + 2); + + // 鼠标追踪用的 tracer + m_tracer = new QCPItemTracer(m_plot); + m_tracer->setGraph(m_plot->graph(0)); // 让它追踪你的蓝色曲线 + m_tracer->setStyle(QCPItemTracer::tsCircle); + m_tracer->setPen(QPen(Qt::yellow)); + m_tracer->setBrush(Qt::yellow); + m_tracer->setSize(7); + m_tracer->setVisible(false); // 默认隐藏 + + // 文本提示 + m_tracerText = new QCPItemText(m_plot); + m_tracerText->setColor(Qt::white); // 文字颜色 + m_tracerText->setFont(QFont("微软雅黑", 10, QFont::Bold)); + m_tracerText->position->setType(QCPItemPosition::ptPlotCoords); + m_tracerText->setBrush(QBrush(QColor(0, 0, 0, 150))); // 半透明背景 + m_tracerText->setPadding(QMargins(5, 2, 5, 2)); // 留点内边距 + m_tracerText->setVisible(false); + + // 绑定鼠标移动事件 + connect(m_plot, &QCustomPlot::mouseMove, this, &WaveFormWidget::onMouseMoveInPlot); + + addLimitLines(m_limitHigh, m_limitLow); } @@ -81,12 +104,12 @@ public: m_yOverLimit.append(value); auto* textItem = new QCPItemText(m_plot); - textItem->setPositionAlignment(Qt::AlignLeft | Qt::AlignVCenter); + textItem->setPositionAlignment(Qt::AlignLeft | Qt::AlignBottom); textItem->position->setType(QCPItemPosition::ptPlotCoords); textItem->position->setCoords(m_timeCounter, value); textItem->setText(QString::number(value, 'f', 2)); textItem->setColor(Qt::yellow); - textItem->setFont(QFont("微软雅黑", 8, QFont::Bold)); + textItem->setFont(QFont("微软雅黑", 8,QFont::Bold)); m_textItems.append(textItem); } @@ -122,6 +145,13 @@ protected: menu.exec(event->globalPos()); } + void leaveEvent(QEvent* event) override { + if (m_tracer) m_tracer->setVisible(false); + if (m_tracerText) m_tracerText->setVisible(false); + m_plot->replot(); + QWidget::leaveEvent(event); + } + private slots: void editJsonParameters() { JsonEditorDialog* dlg = new JsonEditorDialog(m_json, this); @@ -132,6 +162,36 @@ private slots: }); dlg->show(); } + void onMouseMoveInPlot(QMouseEvent* event) { + double x = m_plot->xAxis->pixelToCoord(event->pos().x()); + if (!m_xData.isEmpty()) { + double y = findNearestYValue(x); + + m_tracer->setGraphKey(x); + m_tracer->updatePosition(); + m_tracer->setVisible(true); + + m_tracerText->setText(QString("%1\n值:%2") + .arg(static_cast(std::round(x))) + .arg(y, 0, 'f', 2)); + m_tracerText->setVisible(true); + m_tracerText->setTextAlignment(Qt::AlignLeft); + + // 判断左右边显示气泡 + int mouseX = event->pos().x(); + int mouseY = event->pos().y(); + int plotWidth = m_plot->width(); + int plotHeight = m_plot->height(); + + Qt::Alignment hAlign = (mouseX < plotWidth / 2) ? Qt::AlignLeft : Qt::AlignRight; + Qt::Alignment vAlign = (mouseY < plotHeight / 2) ? Qt::AlignTop : Qt::AlignBottom; + + m_tracerText->setPositionAlignment(hAlign | vAlign); + + m_tracerText->position->setCoords(x, y); + m_plot->replot(); + } + } private: void applyJsonParams() { @@ -152,15 +212,45 @@ private: m_plot->replot(); } + + // 简单线性插值(或者最近点) + double interpolateYValue(double x) { + for (int i = 1; i < m_xData.size(); ++i) { + if (m_xData[i] >= x) { + double x0 = m_xData[i - 1], y0 = m_yData[i - 1]; + double x1 = m_xData[i], y1 = m_yData[i]; + if (x1 == x0) return y0; + return y0 + (y1 - y0) * (x - x0) / (x1 - x0); + } + } + return m_yData.last(); // 超出范围 + } + double findNearestYValue(double x) { + if (m_xData.isEmpty()) + return 0; + + int nearestIndex = 0; + double minDist = std::abs(m_xData[0] - x); + + for (int i = 1; i < m_xData.size(); ++i) { + double dist = std::abs(m_xData[i] - x); + if (dist < minDist) { + minDist = dist; + nearestIndex = i; + } + } + + return m_yData[nearestIndex]; + } void addLimitLines(double high, double low) { auto* line1 = new QCPItemStraightLine(m_plot); - line1->setPen(QPen(Qt::green, 1, Qt::DashLine)); + line1->setPen(QPen(Qt::green, 1, Qt::SolidLine)); line1->point1->setCoords(0, high); line1->point2->setCoords(1, high); auto* line2 = new QCPItemStraightLine(m_plot); - line2->setPen(QPen(Qt::green, 1, Qt::DashLine)); + line2->setPen(QPen(Qt::green, 1, Qt::SolidLine)); line2->point1->setCoords(0, low); line2->point2->setCoords(1, low); } @@ -175,6 +265,9 @@ private: int m_maxPoints = 50; double m_timeCounter = 0; double m_limitHigh = -1, m_limitLow = 2; + QCPItemTracer* m_tracer = nullptr; + QCPItemText* m_tracerText = nullptr; + }; diff --git a/src/mission/952_15_H_25D/952_15_H_25D.h b/src/mission/952_15_H_25D/952_15_H_25D.h index 0593949..aa5c6fd 100644 --- a/src/mission/952_15_H_25D/952_15_H_25D.h +++ b/src/mission/952_15_H_25D/952_15_H_25D.h @@ -96,8 +96,15 @@ static bool _952_15_H_Algo(std::shared_ptr data, handleAIModels* _hand qCritical() << "图片数量不满足要求:" << data->oriImgs.size(); return false; } + if (data->oriImgs[0].rows == 100) { + cv::Mat Paint; + data->oriImgs[0].copyTo(Paint); + cv::putText(Paint, "time out", cv::Point(0, 50), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(255), 2); + return true; + } cv::Mat Paint; + QMutex paintMutex; clock_t start, finish; start = clock(); @@ -109,7 +116,7 @@ static bool _952_15_H_Algo(std::shared_ptr data, handleAIModels* _hand cv::cvtColor(src2, Paint, cv::COLOR_GRAY2BGR); else src2.copyTo(Paint); - QMutex paintMutex; + std::future future = std::async(std::launch::async, _952_15_H_25D_ALGO_HuaShangAI, data, data->oriImgs[2], _handleAIModels, std::ref(Paint), std::ref(paintMutex)); HTuple out_Distance, out_ResultRows, out_ResultCols, out_Flag, out_LinePonit; { diff --git a/src/mission/952_15_Q_2D3D/952_15_Q_2D3D.h b/src/mission/952_15_Q_2D3D/952_15_Q_2D3D.h index 7c3ce45..ca46ba9 100644 --- a/src/mission/952_15_Q_2D3D/952_15_Q_2D3D.h +++ b/src/mission/952_15_Q_2D3D/952_15_Q_2D3D.h @@ -49,7 +49,6 @@ static bool _952_15_Q_2D_P_ALGO_HuaShangAI(cv::Mat& img, handleAIModels* _handle if (clsIsNg == true) { color = cv::Scalar(0, 0, 255); isNg = true; - cv::approxPolyDP(contours[i], contours[i], 3, true); // 多边形拟合 QMutexLocker locker(&paintMutex); cv::drawContours(Paint, contours, i, color, 2); } @@ -83,7 +82,6 @@ static bool _952_15_Q_2D_P_ALGO_ZangWuAI(cv::Mat& img, handleAIModels* _handleAi if (clsIsNg == true) { color = cv::Scalar(0, 0, 255); isNg = true; - cv::approxPolyDP(contours[i], contours[i], 3, true); // 多边形拟合 QMutexLocker locker(&paintMutex); cv::drawContours(Paint, contours, i, color, 2); } @@ -400,9 +398,16 @@ public: //8040 1 Summary1 void sumRequest1(QByteArray& byteArray){ _serviceManager->_triggerManager->writeShort({ "D8040_0" ,"D9402_1","D9404_1"}); - int snPos = _3D_snPos; + int snPos = summary_triggerPos; std::string sn = _serviceManager->_triggerManager->readSnFromQByteArray(byteArray, snPos, false, false, -1); _952_15_Q_2D3D_1_summaryData* dataPtr = _summaryData.get(sn); + _serviceManager->_triggerManager->writeShort({ + "D6020_1", "D6021_1", "D6022_1", "D6023_1", "D6024_1", + "D6025_1", "D6026_1", "D6027_1", "D6028_1", "D6029_1", + "D6030_1", "D6031_1", "D6032_1", "D6033_1", "D6034_1", + "D6035_1", "D6036_1", "D6037_1", "D6038_1", "D6039_1" + }); + _serviceManager->_triggerManager->sendFinsMsg("write_float_D8046_"+ dataPtr->_2D_P_Result);//右上留白 _serviceManager->_triggerManager->sendFinsMsg("write_float_D8047_" + dataPtr->_2D_N_Result);//右下留白 _serviceManager->_triggerManager->sendFinsMsg("write_float_D8048_" + dataPtr->_3D_1_Result);//右对其度 @@ -410,7 +415,6 @@ public: std::cout << "通道1 SN:" << sn << " 发送结果" << std::endl;//:\n左留白->" << dataPtr->leftLiuBai.toStdString() << "\n右留白->" << dataPtr->rightLiuBai.toStdString() << "\n对其度->" << dataPtr->duiqidu.toStdString()< data, handleAiModelManager* _handleAiModelManager){ cv::Mat testImg; if(data->oriImgs[0].channels() == 1)