This commit is contained in:
2024-08-09 17:38:23 +08:00
parent e18e767915
commit 991c9c9a78
23 changed files with 83 additions and 18 deletions
Binary file not shown.
@@ -16,7 +16,7 @@ bool pinHalconEvaluate(std::shared_ptr <detData> data, cv::Rect& Result, cv::Mat
std::vector<handdleAI::Bbox> pinDetEvaluate(std::shared_ptr <detData> data, cv::Mat& src, handleAiModelManager* _handleAiModelManager)
{
std::vector<handdleAI::Bbox> result;
handleAiModelDet* detPtr = _handleAiModelManager->getDetModel(data->_productDataStruct.handleAiData.detModelName);
handleAiModelDet* detPtr = _handleAiModelManager->getDetModel("connectorDet.BHD");
if (detPtr == nullptr)
return std::vector<handdleAI::Bbox>();
detPtr->Evaluate(src, result);
@@ -23,6 +23,7 @@ bool processAlgo(std::shared_ptr <detData> data, handleAiModelManager* _handleAi
catch (const std::exception& e)
{
std::cerr << "Caught exception: " << e.what() << std::endl;
std::cout << "Caught exception: " << e.what() << std::endl;
return false;
}
return false;
@@ -62,7 +62,7 @@ static void apexSmallHalconPaint(cv::Mat& out, std::vector<startAndEndPoints>xLi
static cv::Mat apexSmallHalconAlgo(std::shared_ptr<detData>data, cv::Mat& src)
{
cv::Mat halconImg;
src(cv::Rect(50, 50, src.cols - 100, src.rows - 150)).copyTo(halconImg);
src.copyTo(halconImg);
HTuple hv_out_OK_Pings;
HTuple hv_out_NG_Pings;
HTuple hv_out_Flag_INS;
@@ -706,6 +706,10 @@ struct rectAndData
//平铺图像
static cv::Mat tiledImages(std::vector<cv::Mat>& imgs)
{
if (imgs.size() == 0)
return cv::imread("./noimg.png",-1);
if (imgs.size() == 1)
return imgs[0];
//总图像大小 平铺显示
int matWidth = 0, matHeight = 0;
for (auto& mat : imgs)
+1 -1
View File
@@ -84,7 +84,7 @@ public:
std::vector<std::string>imgSaveFileParameter;//命名规则 str1_str2... 第一个参数已默认为相机名,在构造函数
//需要存入的SQL数据
std::vector<std::pair<std::string, double>> sqlVec;
std::vector<std::pair<std::string, std::string>> sqlVec;
detData(std::string IN_cameraKeyName)
{
cameraKeyName = IN_cameraKeyName;
+17 -7
View File
@@ -259,6 +259,8 @@ public:
//检测结果处理
void detectionResultHandle(std::shared_ptr<detData>data)
{
data->sqlVec.push_back({ "SN",data->SNcode });
data->sqlVec.push_back({ "ARMPOS",std::to_string(data->armPos)});
//发送图片
if (data->resultImgs.size() > 0)
{
@@ -292,25 +294,26 @@ public:
emit _core._qtFunc.addDashBoardData(1, data->aiDetOK);
emit _core._qtFunc.uiModuleLocationMap_SetProductSignStatus(data->armPos,
(data->halconOK==true&& data->aiDetOK==true)?2:3);
bool finalOk = (data->halconOK == true || data->aiDetOK == true)? true :false;
if(finalOk=false)
bool finalOk = (data->halconOK == true && data->aiDetOK == true);
if(finalOk == false)
{
for (auto showMat : data->resultImgs)
for (auto& showMat : data->resultImgs)
{
QPixmap pixmap;
cvMatToQPixMap(showMat, pixmap);
showImgPack* pack = new showImgPack();
//showImgPack* pack = new showImgPack();
emit _core._qtFunc.uiModuleImageDoubleCheckQdialog_ShowWindows(pixmap);
}
}
auto productData = _core._productDataCache.get(currentSn);
if (finalOk = false)
if (finalOk == false)
productData->ngCount++;
perConnector _perConnectorData;
_perConnectorData.aiOk = data->aiDetOK;
_perConnectorData.halconOk = data->halconOK;
_perConnectorData.maxPinDetValue = data->maxPinDetValue;
productData->connectorResults.push_back(_perConnectorData);
data->sqlVec.push_back({ "Result",std::to_string(finalOk)});
}
//ct计算以及发送到界面
auto totalCt = std::chrono::duration_cast<std::chrono::milliseconds>(data->halconEndTime - data->algoStartTime);
@@ -322,11 +325,13 @@ public:
emit _core._qtFunc.addCtData(1, aiCt.count());
if (halconCt.count() > 0)
emit _core._qtFunc.addCtData(2, halconCt.count());
data->sqlVec.push_back({ "totalCt",std::to_string(totalCt.count()) });
data->sqlVec.push_back({ "aiCt",std::to_string(aiCt.count()) });
data->sqlVec.push_back({ "halconCt",std::to_string(halconCt.count()) });
//SQL
std::vector<sqlData> sqlDatas;
for (auto sqlData : data->sqlVec)
sqlDatas.push_back({ sqlData.first, std::to_string(sqlData.second) });
sqlDatas.push_back({ sqlData.first, sqlData.second });
_core._appConfig._sqlManager.addData(data->SNcode, sqlDatas);
//写入plc
@@ -364,5 +369,10 @@ public slots:
_triggerManager.sendFinsMsg("write_short_350_" + QString::number(_core._appConfig.productDatas[productTypeIn].indexOfArm));
_triggerManager.sendFinsMsg("write_short_351_1");
}
//人工复盘按下NG
void uiModuleImageDoubleCheckQdialog_pressNG()
{
_triggerManager.sendFinsMsg("write_short_363_1");
}
};
#pragma once
+4
View File
@@ -107,8 +107,12 @@ void connectSignalAndSlots(MainWindow* front, appCore* _core, detProcess* _detPr
front->_displayWidget->_uiModuleLocationMap, &uiModuleLocationMap::resetToDefault);
QObject::connect(&_core->_qtFunc, &qtFunction::uiModuleLocationMap_SetProductSignStatus,
front, &MainWindow::uiModuleLocationMapSetProductSignStatus);
//uiModuleImageDoubleCheckQdialog
QObject::connect(&_core->_qtFunc, &qtFunction::uiModuleImageDoubleCheckQdialog_ShowWindows,
front, [=](QPixmap map) {front->_imageDoubleCheckQdialog->showAndSetImg(map); });
QObject::connect(front->_imageDoubleCheckQdialog,&imageDoubleCheckQdialog::ngSignal,
_detProcess, &detProcess::uiModuleImageDoubleCheckQdialog_pressNG);
//uiModuleSummaryDataManager
QObject::connect(&_core->_qtFunc, &qtFunction::uiModuleSummaryDataManager_SetSummaryResultText,
front, [=](QString text, Qt::GlobalColor color)
{front->_displayWidget->_summaryDataManager->setSummaryResult(text, color); });
@@ -17,6 +17,8 @@ public:
QPushButton* closeBtn = new QPushButton(this);
fancyButtonText* okBtn = new fancyButtonText(120, 40, "OK", "继续");
fancyButtonText* ngBtn = new fancyButtonText(120, 40, "NG", "继续");
QMutex mutex;
QQueue< QPixmap>imgqueue;
imageDoubleCheckQdialog()
{
QPalette paletteWhite, paletteRed, paletteGreen;
@@ -81,21 +83,21 @@ public:
menuBarLayoutRight->addWidget(closeBtn);
QObject::connect(closeBtn, &QPushButton::clicked, this, &QDialog::close);
QHBoxLayout* imageViewLayout = new QHBoxLayout();
imageViewLayout->addWidget(_ImageWidgetManager);
_ImageWidgetManager->createViewer("");
_ImageWidgetManager->disableAllSwitchBtn();
QHBoxLayout* okngBtnLayout = new QHBoxLayout();
okngBtnLayout->addWidget(okBtn);
okngBtnLayout->addWidget(ngBtn);
QObject::connect(okBtn, &QPushButton::clicked, this, &QDialog::close);
QObject::connect(ngBtn, &QPushButton::clicked, this, &QDialog::close);
QObject::connect(okBtn, &QPushButton::clicked, this, [=]() {emit okSignal(); });
QObject::connect(ngBtn, &QPushButton::clicked, this, [=]() {emit ngSignal(); });
//QObject::connect(okBtn, &QPushButton::clicked, this, &QDialog::close);
//QObject::connect(ngBtn, &QPushButton::clicked, this, &QDialog::close);
QObject::connect(okBtn, &QPushButton::clicked, this, [=]() {pressOK(); });
QObject::connect(ngBtn, &QPushButton::clicked, this, [=]() {pressNG(); });
layout->addWidget(menuBarWidget, 0, 0);
layout->addLayout(imageViewLayout, 1, 0);
@@ -105,13 +107,57 @@ public:
}
void showAndSetImg(QPixmap img)
{
_ImageWidgetManager->showImg(img, imgWidgetShowType::imgWidgetOri, 0);
this->show();
mutex.lock();
std::cout << isShowing<<"-" << imgqueue.size()<< std::endl;
if (isShowing == false && imgqueue.size() == 0)
{
_ImageWidgetManager->showImg(img, imgWidgetShowType::imgWidgetOri, 0);
this->show();
isShowing = true;
}
else
{
imgqueue.enqueue(img);
}
mutex.unlock();
}
signals:
void okSignal();
void ngSignal();
private:
void pressOK()
{
mutex.lock();
emit okSignal();
if (imgqueue.size() > 0)
{
QPixmap img = imgqueue.dequeue();
_ImageWidgetManager->showImg(img, imgWidgetShowType::imgWidgetOri, 0);
}
else
{
isShowing = false;
close();
}
mutex.unlock();
}
void pressNG()
{
mutex.lock();
emit ngSignal();
if (imgqueue.size() > 0)
{
QPixmap img = imgqueue.dequeue();
_ImageWidgetManager->showImg(img, imgWidgetShowType::imgWidgetOri, 0);
}
else
{
isShowing = false;
close();
}
mutex.unlock();
}
bool isShowing = false;
bool isMoving = false;
bool isResizing = false;
int minWidth = 720, minHeight = 480;
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.