备份
This commit is contained in:
@@ -11,7 +11,7 @@ cv::Mat pinHandleAiEvaluate(std::shared_ptr <detData> data, cv::Mat& src,
|
||||
bool pinHalconEvaluate(std::shared_ptr <detData> data, cv::Rect& Result, cv::Mat& src, cv::Mat& out, int productType);
|
||||
|
||||
//公头定位
|
||||
std::vector<handdleAI::Bbox> pinDetEvaluate(std::shared_ptr <detData> data ,cv::Mat& src, handleAiModelManager* _handleAiModelManager)
|
||||
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);
|
||||
@@ -27,7 +27,7 @@ std::vector<handdleAI::Bbox> getpinHandleAiEvaluateRect(std::shared_ptr <detData
|
||||
int totalWidth = 0;
|
||||
for (auto detResult : detResult)
|
||||
totalWidth += detResult.w;
|
||||
int avgWidth= totalWidth / detResult.size();
|
||||
int avgWidth = totalWidth / detResult.size();
|
||||
|
||||
cv::Point centerPos(src.rows / 2, src.cols / 2);
|
||||
cv::Rect targetRect(src.cols / 3, src.rows / 3, src.cols / 3, src.rows / 3);
|
||||
@@ -84,7 +84,7 @@ std::vector<cv::Rect> getTopPoints(std::vector<cv::Rect>& rectangles)
|
||||
{
|
||||
double minX, maxX, avgX;
|
||||
double minY, maxY, avgY;
|
||||
for (auto data : rectangles)
|
||||
for (auto data : rectangles)
|
||||
{
|
||||
std::cout << data.y << std::endl;
|
||||
}
|
||||
@@ -98,9 +98,9 @@ void halconPaint(cv::Mat& out, const std::vector<cv::Rect>& AllPos)
|
||||
std::vector<int>eachLineX;//记录
|
||||
for (auto& vec : groupedRectangles)//画竖线
|
||||
{
|
||||
cv::line(out,
|
||||
cv::Point(vec[0].x + vec[0].width / 2, 0),
|
||||
cv::Point(vec[0].x + vec[0].width / 2, out.rows),
|
||||
cv::line(out,
|
||||
cv::Point(vec[0].x + vec[0].width / 2, 0),
|
||||
cv::Point(vec[0].x + vec[0].width / 2, out.rows),
|
||||
cv::Scalar(255, 255, 255), 1);
|
||||
eachLineX.push_back(vec[0].x + vec[0].width / 2);
|
||||
}
|
||||
@@ -110,9 +110,9 @@ void halconPaint(cv::Mat& out, const std::vector<cv::Rect>& AllPos)
|
||||
std::to_string(eachLineX[i] - eachLineX[i - 1]),
|
||||
cv::Point(eachLineX[i - 1], 20), 1, 2,
|
||||
cv::Scalar(255, 255, 255));
|
||||
cv::line(out,
|
||||
cv::Point(eachLineX[i - 1],20),
|
||||
cv::Point(eachLineX[i], 20),
|
||||
cv::line(out,
|
||||
cv::Point(eachLineX[i - 1], 20),
|
||||
cv::Point(eachLineX[i], 20),
|
||||
cv::Scalar(255, 255, 255), 1);
|
||||
}
|
||||
for (int i = 0; i < groupedRectangles.size(); i++)//画竖线间的横线
|
||||
@@ -129,23 +129,23 @@ void halconPaint(cv::Mat& out, const std::vector<cv::Rect>& AllPos)
|
||||
cv::Scalar(0, 255, 0), 1);
|
||||
cv::putText(out,
|
||||
std::to_string(range),
|
||||
cv::Point(eachLineX[i], mid.y-5), 1, 2,
|
||||
cv::Point(eachLineX[i], mid.y - 5), 1, 2,
|
||||
cv::Scalar(0, 255, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
void halconEvaluate(std::shared_ptr <detData> data, std::vector<handdleAI::Bbox>connectorPos,std::vector<cv::Mat>&halconImgResult)
|
||||
void halconEvaluate(std::shared_ptr <detData> data, std::vector<handdleAI::Bbox>connectorPos, std::vector<cv::Mat>& halconImgResult)
|
||||
{
|
||||
cv::Mat src = data->oriImgs[0];
|
||||
for (auto& box : connectorPos)
|
||||
{
|
||||
cv::Mat halconMatResult;
|
||||
bool halconBoolResult = pinHalconEvaluate(data,BboxToRect(box), src, halconMatResult, 5);
|
||||
bool halconBoolResult = pinHalconEvaluate(data, BboxToRect(box), src, halconMatResult, 5);
|
||||
if (halconBoolResult == true)
|
||||
halconImgResult.push_back(halconMatResult);//HALCON检测结果
|
||||
}
|
||||
}
|
||||
bool pinHalconEvaluate(std::shared_ptr <detData> data, cv::Rect& Result, cv::Mat& src,cv::Mat& out,int productType)
|
||||
}
|
||||
bool pinHalconEvaluate(std::shared_ptr <detData> data, cv::Rect& Result, cv::Mat& src, cv::Mat& out, int productType)
|
||||
{
|
||||
#pragma region halcon变量定义
|
||||
//测量
|
||||
@@ -183,7 +183,7 @@ bool pinHalconEvaluate(std::shared_ptr <detData> data, cv::Rect& Result, cv::Mat
|
||||
|
||||
hv_in_ShapePath = "./halconModel";
|
||||
//
|
||||
HTuple hv_in_FilePath=".\\halconFiles\\";
|
||||
HTuple hv_in_FilePath = ".\\halconFiles\\";
|
||||
HTuple hv_out_OK_Pings;
|
||||
HTuple hv_out_NG_Pings;
|
||||
//
|
||||
@@ -211,27 +211,27 @@ bool pinHalconEvaluate(std::shared_ptr <detData> data, cv::Rect& Result, cv::Mat
|
||||
break;
|
||||
}
|
||||
int flag = hv_out_Flag_INS.D();
|
||||
if(flag ==1)
|
||||
if (flag == 1)
|
||||
{
|
||||
if (productType == 5)
|
||||
{
|
||||
halconImg.copyTo(out);
|
||||
if (out.channels() == 1)
|
||||
cv::cvtColor(out, out, cv::COLOR_GRAY2BGR);
|
||||
int hv_out_OK_PingsSize = hv_out_OK_Pings.Length(), hv_out_NG_PingsSize = hv_out_NG_Pings.Length();
|
||||
std::cout << "OKSize"<< hv_out_OK_PingsSize<<"NGSize"<< hv_out_NG_PingsSize << std::endl;
|
||||
std::vector<cv::Rect>okPos, ngPos,AllPoints;
|
||||
for (int i = 0; i < hv_out_OK_PingsSize/4; i++)
|
||||
int hv_out_OK_PingsSize = hv_out_OK_Pings.Length(), hv_out_NG_PingsSize = hv_out_NG_Pings.Length();
|
||||
std::cout << "OKSize" << hv_out_OK_PingsSize << "NGSize" << hv_out_NG_PingsSize << std::endl;
|
||||
std::vector<cv::Rect>okPos, ngPos, AllPoints;
|
||||
for (int i = 0; i < hv_out_OK_PingsSize / 4; i++)
|
||||
{
|
||||
cv::Rect rect(
|
||||
hv_out_OK_Pings[i * 4 ].D(),
|
||||
hv_out_OK_Pings[i * 4 +1].D(),
|
||||
hv_out_OK_Pings[i * 4].D(),
|
||||
hv_out_OK_Pings[i * 4 + 1].D(),
|
||||
hv_out_OK_Pings[i * 4 + 2].D(),
|
||||
hv_out_OK_Pings[i * 4 + 3].D());
|
||||
okPos.push_back(rect);
|
||||
AllPoints.push_back(rect);
|
||||
}
|
||||
for (int i = 0; i < hv_out_NG_PingsSize/4; i++)
|
||||
for (int i = 0; i < hv_out_NG_PingsSize / 4; i++)
|
||||
{
|
||||
cv::Rect rect(
|
||||
hv_out_NG_Pings[i + 1].D(),
|
||||
@@ -250,6 +250,7 @@ bool pinHalconEvaluate(std::shared_ptr <detData> data, cv::Rect& Result, cv::Mat
|
||||
}
|
||||
if (hv_out_Pings_X.Length() > 0)
|
||||
data->halconOK = false;
|
||||
std::cout << "HALCON FAILURE" << std::endl;
|
||||
out = halconImg;
|
||||
return false;
|
||||
//Pings_ROI(ho_in_Image, hv_in_ShapePath, hv_in_Parameter, &hv_out_ROI_Value, &hv_out_Flag_ROI);
|
||||
@@ -292,6 +293,7 @@ cv::Mat pinHandleAiEvaluate(std::shared_ptr <detData> data, cv::Mat& src,
|
||||
cv::Rect rect = originRect;
|
||||
cv::Mat clsImg = cutImg2Cls(rect, src);
|
||||
int clsRes = clsPtr->Evaluate(clsImg);
|
||||
clsRes = 1;
|
||||
cv::Scalar color = cv::Scalar(0, 0, 255, 30);
|
||||
std::string clsFileName;
|
||||
switch (clsRes)
|
||||
@@ -315,10 +317,10 @@ cv::Mat pinHandleAiEvaluate(std::shared_ptr <detData> data, cv::Mat& src,
|
||||
//返回结果图
|
||||
return Paint;
|
||||
}
|
||||
void handleAiEvaluate(std::shared_ptr <detData> data, handleAiModelManager* _handleAiModelManager, std::vector<handdleAI::Bbox>connectorPos, std::vector<cv::Mat>&aiImgResult)
|
||||
void handleAiEvaluate(std::shared_ptr <detData> data, handleAiModelManager* _handleAiModelManager, std::vector<handdleAI::Bbox>connectorPos, std::vector<cv::Mat>& aiImgResult)
|
||||
{
|
||||
cv::Mat src = data->oriImgs[0];
|
||||
for(auto& handleAiData: data->_productDataStruct.handleAiData.detResultHandle)
|
||||
for (auto& handleAiData : data->_productDataStruct.handleAiData.detResultHandle)
|
||||
{
|
||||
handleAiModelSeg* segPtr = _handleAiModelManager->getSegModel(handleAiData.segModelName);
|
||||
handleAiModelCls* clsPtr = _handleAiModelManager->getClsModel(handleAiData.clsModelName);
|
||||
@@ -353,21 +355,21 @@ void ALGO_Inspection(std::shared_ptr <detData> data, handleAiModelManager* _hand
|
||||
int errorCode = ALGO_InspectionErrorCheck(data);
|
||||
if (errorCode != 0)
|
||||
{
|
||||
qDebug() << __FUNCDNAME__ << __LINE__ << "errorCheck ERR"<< errorCode;
|
||||
qDebug() << __FUNCDNAME__ << __LINE__ << "errorCheck ERR" << errorCode;
|
||||
return;
|
||||
}
|
||||
data->algoStartTime = std::chrono::high_resolution_clock::now();
|
||||
cv::Mat src = data->oriImgs[0];
|
||||
//使用det获取每个公头的位置
|
||||
std::vector<handdleAI::Bbox> detResult = pinDetEvaluate(data,src, _handleAiModelManager);
|
||||
std::vector<handdleAI::Bbox> detResult = pinDetEvaluate(data, src, _handleAiModelManager);
|
||||
//std::vector<handdleAI::Bbox> detResult = { { 2101.71411,1821.34961,1245.11145 ,1453.68127},
|
||||
// {3365.11548,1816.07214,1240.55957,1454.79187} };
|
||||
if (detResult.size() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
//过滤结果,获取用于handleAi/HALCON检测的rect
|
||||
std::vector<handdleAI::Bbox> pinPos = getpinHandleAiEvaluateRect(data,src, detResult);
|
||||
std::vector<handdleAI::Bbox> pinPos = getpinHandleAiEvaluateRect(data, src, detResult);
|
||||
|
||||
//HANDLEAI
|
||||
std::vector<cv::Mat>aiImgResult;
|
||||
@@ -384,6 +386,6 @@ void ALGO_Inspection(std::shared_ptr <detData> data, handleAiModelManager* _hand
|
||||
data->resultImgs.push_back(tiledImages(aiImgResult));
|
||||
if (halconImgResult.size() > 0)
|
||||
data->resultImgs.push_back(tiledImages(halconImgResult));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ public:
|
||||
mutex->unlock();
|
||||
return result;
|
||||
}
|
||||
int currentProductIndex;//switchProductWidget
|
||||
int currentProductIndex = 0;//switchProductWidget
|
||||
std::vector<productDataStruct>* productDatasPtr = nullptr;//appConfig
|
||||
std::mutex* mutex = nullptr;//appConfig
|
||||
};
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <appCoreQtFunction.h>
|
||||
#include <qtimer.h>
|
||||
|
||||
#define enableHandleAiModel 0
|
||||
#define enableHandleAiModel 1
|
||||
#define disableBackEndCheck 1
|
||||
#define disableeAlgo 0
|
||||
#define enableHideConsle 1
|
||||
|
||||
@@ -177,7 +177,7 @@ public:
|
||||
emit _core._qtFunc.uiModuleLocationMapSetProductSignStatus(Pos,1);
|
||||
std::cout << "arm @Pos:" << Pos;
|
||||
|
||||
std::shared_ptr <detData> data = _detDataManager.insertDetData("Camera1", "TEST", 1, 1);
|
||||
std::shared_ptr <detData> data = _detDataManager.insertDetData("Camera1", currentSn, 1, 1);
|
||||
data->oriShowIndex = 0;
|
||||
data->resShowIndex = 0;
|
||||
data->armPos = Pos;
|
||||
@@ -267,15 +267,15 @@ public:
|
||||
emit _core._qtFunc.addDashBoardData(1, data->aiDetOK);
|
||||
emit _core._qtFunc.uiModuleLocationMapSetProductSignStatus(data->armPos,
|
||||
(data->halconOK==true&& data->aiDetOK==true)?2:3);
|
||||
bool finalOk = (data->halconOK == true && data->aiDetOK == true)? true :false;
|
||||
if(finalOk=true)
|
||||
bool finalOk = (data->halconOK == true || data->aiDetOK == true)? true :false;
|
||||
if(finalOk=false)
|
||||
{
|
||||
for (auto showMat : data->resultImgs)
|
||||
{
|
||||
QPixmap pixmap;
|
||||
cvMatToQPixMap(showMat, pixmap);
|
||||
showImgPack* pack = new showImgPack();
|
||||
emit _core._qtFunc.uiModuleImageDoubleCheckQdialogShowWindows(pixmap);
|
||||
emit _core._qtFunc.uiModuleImageDoubleCheckQdialogShowWindows(pixmap);
|
||||
}
|
||||
}
|
||||
auto productData = _core._productDataCache.get(currentSn);
|
||||
@@ -319,7 +319,8 @@ public slots:
|
||||
_core._detGlobalData.productTypeStr = _core._appConfig.productDatas[productTypeIn].name;
|
||||
_core._appConfig.productDatasMutex.unlock();
|
||||
_core._detGlobalData.productType = productTypeIn;
|
||||
_core._detGlobalData.currentSn = SN.toStdString();
|
||||
if(_core._detGlobalData.currentSn!="")
|
||||
_core._detGlobalData.currentSn = SN.toStdString();
|
||||
currentSn = SN.toStdString();
|
||||
_triggerManager.sendFinsMsg("write_short_350_" + QString::number(_core._appConfig.productDatas[productTypeIn].indexOfArm));
|
||||
_triggerManager.sendFinsMsg("write_short_351_1");
|
||||
|
||||
@@ -271,6 +271,8 @@ signals:
|
||||
protected:
|
||||
void mouseDoubleClickEvent(QMouseEvent* event) override
|
||||
{
|
||||
if (event->pos().y() > 35)
|
||||
return
|
||||
toggleMaximize(reverse);
|
||||
QMainWindow::mouseDoubleClickEvent(event);
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ public:
|
||||
});
|
||||
connect(productNameTypeSwitch, &QComboBox::currentTextChanged, this, [=]()
|
||||
{
|
||||
productSelectFresh(productNameTypeSwitch->currentIndex());
|
||||
//productSelectFresh(productNameTypeSwitch->currentIndex());
|
||||
});
|
||||
}
|
||||
void productSelectFresh(int index)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"imgPosPath":"./imgPosTip/Test1.jpg",
|
||||
"imgPosPath":"./imgPosTip/asr1006.png",
|
||||
"productSign":
|
||||
{
|
||||
"0":
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"productName":"APEX18",
|
||||
"customerPartNumber":"DS-C9718",
|
||||
"foxconnPartNumber":"800-102754-03",
|
||||
"imgPosPath":"./imgPosTip/Test1.jpg",
|
||||
"imgPosPath":"./imgPosTip/apex18.png",
|
||||
"productIndex":6,
|
||||
"baseX":0.00,
|
||||
"baseY":0.00,
|
||||
@@ -10,7 +10,7 @@
|
||||
"baseRx":0.00,
|
||||
"baseRy":0.00,
|
||||
"baseRz":0.00,
|
||||
"connectorAmout":-1,
|
||||
"connectorAmout":96,
|
||||
"halconAlgoIndex":0,
|
||||
"cameraSetting":
|
||||
{
|
||||
@@ -31,7 +31,7 @@
|
||||
[
|
||||
{
|
||||
"detResultIndex":[0],
|
||||
"segModelName":"ASR-Seg.BHD",
|
||||
"segModelName":"APEX-Seg.BHD",
|
||||
"segNgIndex":[0,1,2],
|
||||
"segGpuIndex":0,
|
||||
"clsModelName":"ASR-Cls.BHD",
|
||||
@@ -43,7 +43,67 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"productSign":
|
||||
{
|
||||
"1": {
|
||||
"x": 1305,
|
||||
"y": 10,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行1"
|
||||
},
|
||||
"2": {
|
||||
"x": 1305,
|
||||
"y": 170,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行2"
|
||||
},
|
||||
"3": {
|
||||
"x": 1305,
|
||||
"y": 330,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行3"
|
||||
},
|
||||
"4": {
|
||||
"x": 1305,
|
||||
"y": 490,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行4"
|
||||
},
|
||||
"5": {
|
||||
"x": 1305,
|
||||
"y": 650,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行5"
|
||||
},
|
||||
"6": {
|
||||
"x": 1305,
|
||||
"y": 810,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行6"
|
||||
},
|
||||
"7": {
|
||||
"x": 1305,
|
||||
"y": 970,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行7"
|
||||
},
|
||||
"8": {
|
||||
"x": 1305,
|
||||
"y": 1130,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行8"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"productName":"APEX18B",
|
||||
"customerPartNumber":"DS-C9718B",
|
||||
"foxconnPartNumber":"800-102754-03B",
|
||||
"imgPosPath":"./imgPosTip/Test1.jpg",
|
||||
"imgPosPath":"./imgPosTip/apex18.png",
|
||||
"productIndex":7,
|
||||
"baseX":0.00,
|
||||
"baseY":0.00,
|
||||
@@ -10,7 +10,7 @@
|
||||
"baseRx":0.00,
|
||||
"baseRy":0.00,
|
||||
"baseRz":0.00,
|
||||
"connectorAmout":-1,
|
||||
"connectorAmout":96,
|
||||
"halconAlgoIndex":0,
|
||||
"cameraSetting":
|
||||
{
|
||||
@@ -31,7 +31,7 @@
|
||||
[
|
||||
{
|
||||
"detResultIndex":[0],
|
||||
"segModelName":"ASR-Seg.BHD",
|
||||
"segModelName":"APEX-Seg.BHD",
|
||||
"segNgIndex":[0,1,2],
|
||||
"segGpuIndex":0,
|
||||
"clsModelName":"ASR-Cls.BHD",
|
||||
@@ -43,7 +43,65 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"productSign":
|
||||
{
|
||||
"1": {
|
||||
"x": 1305,
|
||||
"y": 10,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行1"
|
||||
},
|
||||
"2": {
|
||||
"x": 1305,
|
||||
"y": 170,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行2"
|
||||
},
|
||||
"3": {
|
||||
"x": 1305,
|
||||
"y": 330,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行3"
|
||||
},
|
||||
"4": {
|
||||
"x": 1305,
|
||||
"y": 490,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行4"
|
||||
},
|
||||
"5": {
|
||||
"x": 1305,
|
||||
"y": 650,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行5"
|
||||
},
|
||||
"6": {
|
||||
"x": 1305,
|
||||
"y": 810,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行6"
|
||||
},
|
||||
"7": {
|
||||
"x": 1305,
|
||||
"y": 970,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行7"
|
||||
},
|
||||
"8": {
|
||||
"x": 1305,
|
||||
"y": 1130,
|
||||
"w": 150,
|
||||
"h": 160,
|
||||
"sign": "列1行8"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user