Compare commits

..

3 Commits

@ -43,7 +43,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_NF = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/defect.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/defect.engine";
boe_config.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "Base_detect";
boe_config.Stream_num = 2;
@ -55,7 +55,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Type2 = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/defect_WTB.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/defect_WTB.engine";
boe_config.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "WTB_detect";
boe_config.Stream_num = 2;
@ -67,7 +67,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_UP = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/defect_UP.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/defect_UP.engine";
boe_config.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "UP_detect";
boe_config.Stream_num = 2;
@ -79,7 +79,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Chess = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/defect_CHESS.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/defect_CHESS.engine";
boe_config.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "chess_detect";
boe_config.Stream_num = 2;
@ -91,7 +91,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_YX_1 = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/defect_YX_L0.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/defect_YX_L0.engine";
boe_config.strName = "YX1";
boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_YX_1->Init(boe_config);
@ -101,7 +101,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_YX_2 = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/defect_YX_L127L255.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/defect_YX_L127L255.engine";
boe_config.strName = "YX2";
boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_YX_2->Init(boe_config);
@ -113,7 +113,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Cls_L0 = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config jbl_config;
jbl_config.gpuconfig.copy(gupconfig);
jbl_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/class_14.engine";
jbl_config.strPath = "/home/aidlux/BOE/UseModel_FOG/class_14.engine";
jbl_config.inputType = AIModel_Base::Input_HWC;
jbl_config.strName = "14_Class";
jbl_config.IsClass = true;
@ -125,7 +125,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Cls = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config jbl_config;
jbl_config.gpuconfig.copy(gupconfig);
jbl_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/class_14.engine";
jbl_config.strPath = "/home/aidlux/BOE/UseModel_FOG/class_14.engine";
jbl_config.inputType = AIModel_Base::Input_HWC;
jbl_config.strName = "old_Class";
jbl_config.IsClass = true;
@ -138,7 +138,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_zf = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/defect_zf.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/defect_zf.engine";
boe_config.strName = "zf";
boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_zf->Init(boe_config);
@ -149,7 +149,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_127Cell = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/defect_L127.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/defect_L127.engine";
boe_config.strName = "127Cell";
boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_127Cell->Init(boe_config);
@ -160,7 +160,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_RE_POL = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/BOE_POL_128x128.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/BOE_POL_128x128.engine";
boe_config.strName = "RE_POL";
boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_RE_POL->Init(boe_config);
@ -171,7 +171,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_RE_AD = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/BOE_AD_128x128.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/BOE_AD_128x128.engine";
boe_config.strName = "RE_POL";
boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_RE_AD->Init(boe_config);
@ -183,7 +183,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Edge_Big = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/Edge_Big.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/Edge_Big.engine";
boe_config.strName = "Edge_Big";
boe_config.inputType = AIModel_Base::Input_HWC;
AI_defect_Edge_Big->Init(boe_config);
@ -194,7 +194,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Edge_Samll = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/Edge_Small.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/Edge_Small.engine";
boe_config.inputType = AIModel_Base::Input_HWC;
boe_config.strName = "Edge_Small";
AI_defect_Edge_Samll->Init(boe_config);
@ -205,7 +205,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_LackPol = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/BOE_LOSSPOL.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/BOE_LOSSPOL.engine";
boe_config.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "BOE_LOSSPOL";
AI_defect_LackPol->Init(boe_config);
@ -216,7 +216,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_MarkLine = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/defect_MARK_LINE.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/defect_MARK_LINE.engine";
boe_config.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "MarkLine";
AI_defect_MarkLine->Init(boe_config);
@ -227,7 +227,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Edge_QX = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig);
boe_config.strPath = "/home/aidlux/BOE/UseModel_Cell_ET/BOE_Edge_320x320.engine";
boe_config.strPath = "/home/aidlux/BOE/UseModel_FOG/BOE_Edge_320x320.engine";
boe_config.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "Edge_QX";
AI_defect_Edge_QX->Init(boe_config);

@ -69,9 +69,9 @@ file(GLOB_RECURSE SRC_LISTS
${PROJECT_SOURCE_DIR}/AIEngineModule/src/*.cu
)
add_library(CELL_ET_Check SHARED ${SRC_LISTS})
add_library(FOG_Check SHARED ${SRC_LISTS})
target_link_libraries(CELL_ET_Check
target_link_libraries(FOG_Check
nvinfer
Config
${OpenCV_LIBS}
@ -83,10 +83,10 @@ set(ModuleName "")
# make install /usr/local
#
set(CMAKE_INSTALL_PREFIX /usr/local/cellet CACHE PATH "Install path prefix" FORCE)
set(CMAKE_INSTALL_PREFIX /usr/local/fog CACHE PATH "Install path prefix" FORCE)
set(HEADER_FILES include/ImgCheckBase.h include/ImgCheckConfig.h)
#
install(TARGETS CELL_ET_Check
install(TARGETS FOG_Check
LIBRARY DESTINATION lib # CMAKE_INSTALL_PREFIX/lib
ARCHIVE DESTINATION lib/static
RUNTIME DESTINATION bin

@ -122,6 +122,9 @@ private:
int MergeShowImg(std::shared_ptr<Product> product); // 合并图片
// 清理产品list
void Clear_m_ProductList();
// 异常返回
int ErrorReturn(std::shared_ptr<shareImage> p);
@ -156,6 +159,9 @@ private:
std::shared_ptr<DetLog> m_pdetlog;
// 当前检测产品的个数
int m_CurProductIdx = 0;
std::queue<std::shared_ptr<CheckResult>> m_CheckResultList; // 检测结果
std::mutex mtx_CheckResult; // 互斥锁,用于保护数据队列
std::condition_variable CheckResult_cond; // 条件变量,用于同步生产者和消费者线程

@ -74,61 +74,9 @@ enum ERROR_TYPE_
ERROR_TYPE_LackPol, // 缺失Pol
ERROR_TYPE_COUNT,
};
static const std::string QX_Result_Names[] =
{
"OK",
"AD_YX",
"X_Line",
"Y_Line",
"fangge",
"Rubbing_Mura",
"Broken_line",
"ZARA",
"MTX",
"POL_Cell",
"Bright_Point",
"Dark_Point",
"BLack_Point",
"White_Point",
"Scratch",
"Weak_Bright_Mura",
"No_Label",
"Bright_Mura_Exe",
"Sweak_Line_Dark",
"STEAM_POCKET",
"Dirty",
"other",
"Cell_W",
"Cell_B",
"LackPol"};
static const std::string QX_Result_Code[] =
{
"P1153",
"P6873",
"P3351",
"P3452",
"P3453",
"P1550",
"P3379",
"P1153",
"P1164",
"P1101",
"P1112",
"P1111",
"P1104",
"P1103",
"P1557",
"P1654",
"P2833",
"P1549",
"P1204",
"P2534",
"P2534",
"P1101",
"P1103",
"P1104",
"P8001",
};
extern std::vector<std::string> QX_Result_Names;
extern std::vector<std::string> QX_Result_Code;
// 检测检测参数类型
enum CHECK_CONFIG_TYPE_
{
@ -172,6 +120,20 @@ enum DET_MODE_
#define MAX_REGION_NUM 20
struct ReadFlawCode
{
std::string flaw_name;
std::string flaw_code;
std::vector<std::string> config_flaw_name;
ReadFlawCode()
{
config_flaw_name.clear();
flaw_name = "";
flaw_code = "";
}
};
extern std::vector<ReadFlawCode> m_FlawCodeList;
// 一个检测项基本信息,包括图片序号,图片、开始时间
struct shareImage
{

@ -47,6 +47,8 @@ public:
std::shared_ptr<ProductBaseResult> productBaseResult;
// 图片是否都送完了。
bool bIsImgComplete = false;
// product使用计数
int productUseCount = 0;
// 日志
std::vector<std::string> LogList;
std::mutex mtx_CameraResultList;

@ -10,10 +10,10 @@ AI_Edge_Algin::AI_Edge_Algin()
m_bModelSucc = false;
m_str_curCamName = "";
AI_Factory = AIFactory::GetInstance();
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/Edge/Error/");
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/Edge/Result/");
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/Edge/Smasll/");
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/Edge/Big/");
CheckUtil::CreateDir("/home/aidlux/BOE/FOG/Edge/Error/");
CheckUtil::CreateDir("/home/aidlux/BOE/FOG/Edge/Result/");
CheckUtil::CreateDir("/home/aidlux/BOE/FOG/Edge/Smasll/");
CheckUtil::CreateDir("/home/aidlux/BOE/FOG/Edge/Big/");
runner = std::make_shared<AIMulThreadRunBase>();
runner->Start();
}
@ -40,7 +40,7 @@ int AI_Edge_Algin::Detect(const cv::Mat &img, DetConfig *pDetConfig, std::shared
{
erridx = 0;
}
str_error = "/home/aidlux/BOE/CELL_ET/Edge/Error/" + std::to_string(erridx) + "_src.png";
str_error = "/home/aidlux/BOE/FOG/Edge/Error/" + std::to_string(erridx) + "_src.png";
}
cv::Mat showimg;
// 保存结果图片
@ -288,8 +288,8 @@ int AI_Edge_Algin::Detect(const cv::Mat &img, DetConfig *pDetConfig, std::shared
svidx = 0;
/* code */
}
std::string str1 = "/home/aidlux/BOE/CELL_ET/Edge/Result/" + std::to_string(svidx) + "_mask.png";
std::string str2 = "/home/aidlux/BOE/CELL_ET/Edge/Result/" + std::to_string(svidx) + "_show.png";
std::string str1 = "/home/aidlux/BOE/FOG/Edge/Result/" + std::to_string(svidx) + "_mask.png";
std::string str2 = "/home/aidlux/BOE/FOG/Edge/Result/" + std::to_string(svidx) + "_show.png";
int newWidth = 1280;
float aspectRatio = static_cast<float>(resultMask_erode_small.rows) / resultMask_erode_small.cols;
@ -370,8 +370,8 @@ int AI_Edge_Algin::SaveSmallImg(const cv::Mat &img, const cv::Mat &mask, cv::Rec
if (bssss)
{
std::string str1 = "/home/aidlux/BOE/CELL_ET/Edge/Smasll/" + std::to_string(svsmallidx) + "_in.png";
std::string str2 = "/home/aidlux/BOE/CELL_ET/Edge/Smasll/" + std::to_string(svsmallidx) + "_in_mask.png";
std::string str1 = "/home/aidlux/BOE/FOG/Edge/Smasll/" + std::to_string(svsmallidx) + "_in.png";
std::string str2 = "/home/aidlux/BOE/FOG/Edge/Smasll/" + std::to_string(svsmallidx) + "_in_mask.png";
// std::string st3 = "/home/aidlux/BOE/Edge/Smasll/" + std::to_string(svsmallidx) + "_in_show.png";
cv::imwrite(str1, img);
cv::imwrite(str2, mask);
@ -451,8 +451,8 @@ int AI_Edge_Algin::Det_big(const cv::Mat &img, vector<Rect> &smallRoiList, std::
bigidx = 0;
/* code */
}
std::string str1 = "/home/aidlux/BOE/CELL_ET/Edge/Big/" + std::to_string(bigidx) + "_in.png";
std::string str2 = "/home/aidlux/BOE/CELL_ET/Edge/Big/" + std::to_string(bigidx) + "_in_mask.png";
std::string str1 = "/home/aidlux/BOE/FOG/Edge/Big/" + std::to_string(bigidx) + "_in.png";
std::string str2 = "/home/aidlux/BOE/FOG/Edge/Big/" + std::to_string(bigidx) + "_in_mask.png";
cv::imwrite(str1, detImg);
cv::imwrite(str2, mask);
}

@ -6,7 +6,7 @@ AI_Edge_QX_Det::AI_Edge_QX_Det()
{
m_bInitSucc = false;
m_strSaveImgRootPath = "/home/aidlux/BOE/CELL_ET/Edge_QX/";
m_strSaveImgRootPath = "/home/aidlux/BOE/FOG/Edge_QX/";
CheckUtil::CreateDir(m_strSaveImgRootPath);
m_strSaveImgRootPath_OK = m_strSaveImgRootPath + "ok/";
CheckUtil::CreateDir(m_strSaveImgRootPath_OK);

@ -6,7 +6,7 @@
AI_Mark_Det::AI_Mark_Det()
{
m_bModelSucc = false;
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/MarkLine/");
CheckUtil::CreateDir("/home/aidlux/BOE/FOG/MarkLine/");
m_pImageStorage = ImageStorage::getInstance();
m_Show_Area = 0;
m_Show_Len = 0;
@ -241,8 +241,8 @@ int AI_Mark_Det::Detect(const cv::Mat &img, DetConfigResult *pDetConfig)
if (pDetConfig->bDebugsaveimg || pDetConfig->bDetSaveImg)
{
std::string str12 = "/home/aidlux/BOE/CELL_ET/MarkLine/" + pDetConfig->strCamName + "_" + std::to_string(ki) + "_in.png";
std::string strmask = "/home/aidlux/BOE/CELL_ET/MarkLine/" + pDetConfig->strCamName + "_" + std::to_string(ki) + "_in_mask.png";
std::string str12 = "/home/aidlux/BOE/FOG/MarkLine/" + pDetConfig->strCamName + "_" + std::to_string(ki) + "_in.png";
std::string strmask = "/home/aidlux/BOE/FOG/MarkLine/" + pDetConfig->strCamName + "_" + std::to_string(ki) + "_in_mask.png";
if (pDetConfig->bDebugsaveimg)
{
str12 = pDetConfig->strCamName + "_" + std::to_string(ki) + "_in.png";
@ -280,8 +280,8 @@ int AI_Mark_Det::Detect(const cv::Mat &img, DetConfigResult *pDetConfig)
if (pDetConfig->bDebugsaveimg || pDetConfig->bDetSaveImg)
{
std::string str12 = "/home/aidlux/BOE/CELL_ET/MarkLine/Check_big_" + pDetConfig->strCamName + "_in.png";
std::string strmask = "/home/aidlux/BOE/CELL_ET/MarkLine/Check_big_" + pDetConfig->strCamName + "_in_mask.png";
std::string str12 = "/home/aidlux/BOE/FOG/MarkLine/Check_big_" + pDetConfig->strCamName + "_in.png";
std::string strmask = "/home/aidlux/BOE/FOG/MarkLine/Check_big_" + pDetConfig->strCamName + "_in_mask.png";
if (pDetConfig->bDebugsaveimg)
{
str12 = "Check_big_" + pDetConfig->strCamName + "_" + std::to_string(ki) + "_in.png";

@ -7,8 +7,8 @@ AI_SecondDet::AI_SecondDet()
{
m_bModelSucc_AD = false;
m_bModelSucc_POL = false;
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/Second/POL/");
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/Second/AD/");
CheckUtil::CreateDir("/home/aidlux/BOE/FOG/Second/POL/");
CheckUtil::CreateDir("/home/aidlux/BOE/FOG/Second/AD/");
m_pImageStorage = ImageStorage::getInstance();
m_Show_Area = 0;
m_Show_Len = 0;
@ -517,7 +517,7 @@ int AI_SecondDet::SaveProcessImg(const cv::Mat &inImg, const cv::Mat &outImg, co
static int saveimgIdx_ad = 0;
// 循环存储
std::string str_Root = "/home/aidlux/BOE/CELL_ET/Second/";
std::string str_Root = "/home/aidlux/BOE/FOG/Second/";
if (pDetConfig->qx_type == CONFIG_QX_NAME_POL_Cell)
{

@ -12,7 +12,7 @@ static bool compareContourAreas123(const vector<Point> &contour1, const vector<P
AI_ZF_Det::AI_ZF_Det()
{
m_bModelSucc = false;
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/zf/");
CheckUtil::CreateDir("/home/aidlux/BOE/FOG/zf/");
m_pImageStorage = ImageStorage::getInstance();
m_Show_Area = 0;
m_Show_Len = 0;

@ -10,6 +10,126 @@
#include "CheckUtil.hpp"
#include "Define.h"
#include "AI_Factory.h"
#include <fstream>
std::vector<ReadFlawCode> m_FlawCodeList;
std::vector <std::string> QX_Result_Names =
{
"OK",
"AD_YX",
"X_Line",
"Y_Line",
"fangge",
"Rubbing_Mura",
"Broken_line",
"ZARA",
"MTX",
"POL_Cell",
"Bright_Point",
"Dark_Point",
"BLack_Point",
"White_Point",
"Scratch",
"Weak_Bright_Mura",
"No_Label",
"Bright_Mura_Exe",
"Sweak_Line_Dark",
"STEAM_POCKET",
"Dirty",
"other",
"Cell_W",
"Cell_B",
"LackPol"};
std::vector <std::string> QX_Result_Code =
{
"P1153",
"P6873",
"P3351",
"P3452",
"P3453",
"P1550",
"P3379",
"P1153",
"P1164",
"P1101",
"P1112",
"P1111",
"P1104",
"P1103",
"P1557",
"P1654",
"P2833",
"P1549",
"P1204",
"P2534",
"P2534",
"P1101",
"P1103",
"P1104",
"P8001",
};
int ReadFlawCodeConfig(std::string json_path)
{
m_FlawCodeList.erase(m_FlawCodeList.begin(), m_FlawCodeList.end());
std::string strPath = json_path;
printf("ReadFlawCodeConfig path %s\n", strPath.c_str());
Json::CharReaderBuilder builder;
builder["collectComments"] = true;
Json::Value root;
std::string err;
std::ifstream ifs(strPath);
if (!ifs.is_open())
{
printf("error:file is open\n");
return 0;
}
if (!Json::parseFromStream(builder, ifs, &root, &err))
{
printf("error:parseFromStream\n");
return 0;
}
for (int i = 0; i < root.size(); i++)
{
// printf("Node idx %d /%d \n", i, root.size());
ReadFlawCode tem;
tem.flaw_name = root[i]["zh_name"].asString();
tem.flaw_code = root[i]["en_name"].asString();
string desc = root[i]["desc"].asString();
{
std::istringstream stream(desc);
std::string token;
// 使用 getline 按照分号分割
while (std::getline(stream, token, ';'))
{
tem.config_flaw_name.push_back(token);
}
}
m_FlawCodeList.push_back(tem);
}
for(int i = 0; i < m_FlawCodeList.size(); i++)
{
if(i >= QX_Result_Names.size()) {
QX_Result_Names.push_back(m_FlawCodeList.at(i).flaw_name);
QX_Result_Code.push_back(m_FlawCodeList.at(i).flaw_code);
}
else
{
QX_Result_Names.at(i) = m_FlawCodeList.at(i).flaw_name;
QX_Result_Code.at(i) = m_FlawCodeList.at(i).flaw_code;
}
}
return 0;
}
double calculateDistanceBetweenRectCenters(const cv::Rect &rect1, const cv::Rect &rect2, float fx, float fy)
{
// 计算矩形1的中心点
@ -309,6 +429,7 @@ int ALLImgCheckAnalysisy::ExitSystem()
int ALLImgCheckAnalysisy::InitCameraCheckAnalysisy()
{
ReadFlawCodeConfig("/var/aidlux/efs/cell_aoi/model/defect_list.json");
m_pCameraCheckAnalysisyList.clear();
// m_pQX_Merge_Analysis->Clear();
for (const auto &config : m_pConfigManager->Config_instances_)
@ -545,9 +666,14 @@ int ALLImgCheckAnalysisy::PushInImg_New(std::shared_ptr<shareImage> p)
strlog += "isnot exist";
//设置其他m_ProductList送图状态设置为结束
cout << "-------set m_ProductList other product to end-------" << endl ;
std::lock_guard<std::mutex> lock(mtx_ProductList);
for(auto &tem:m_ProductList){
tem->bIsImgComplete = true;
}
if(-1 == p->Status)
{
return CHECK_ERROR_PushImg_ID_Error;
}
}
// 产品不存在 新建一个
@ -557,13 +683,19 @@ int ALLImgCheckAnalysisy::PushInImg_New(std::shared_ptr<shareImage> p)
{
if (m_ProductList.size() > 50)
{
Clear_m_ProductList();
return CHECK_ERROR_PushImg_ListSize;
}
}
strlog += " | create new product";
product = std::make_shared<Product>();
product->productBaseResult->strproductName = p->strImgProductID;
if (m_CurProductIdx > 999999)
{
m_CurProductIdx = 0;
}
product->productUseCount = m_CurProductIdx;
m_CurProductIdx++;
m_ProductList.push_back(product);
std::string strTimg = CheckUtil::getCurTimeHMS();
product->productBaseResult->detlog->bPrintStr = true;
@ -687,7 +819,26 @@ int ALLImgCheckAnalysisy::MergeShowImg(std::shared_ptr<Product> product)
return 0;
}
void ALLImgCheckAnalysisy::Clear_m_ProductList(){
int num = m_ProductList.size();
string strlog = "";
printf("******************\n\n m_ProductImgDetResultList %ld \n", m_ProductList.size());
std::lock_guard<std::mutex> lock(mtx_ProductList);
int idx = -1;
for (int i = 0; i < m_ProductList.size(); i++)
{
int sub = std::abs(m_CurProductIdx - m_ProductList.at(i)->productUseCount);
if (sub > 50)
{
// 删除指定位置的元素
// m_ProductList.at(i)->productBaseResult->detlog->AddCheckstr(PrintLevel_0, "PushInImg", "%s Delete size > %d; m_CurProductIdx %d - nNotDetCount %d > 50",
// m_ProductList.at(i)->,
// m_ProductList.size(), m_CurProductIdx,
// m_ProductList.at(i)->productUseCount);
m_ProductList.erase(m_ProductList.begin() + i);
}
}
}
int ALLImgCheckAnalysisy::Run()
{

@ -34,7 +34,7 @@ CameraCheckAnalysisy::CameraCheckAnalysisy()
m_pCommonAnalysisyConfig = NULL;
m_imageResultJudge.SetAnalysisyConfig(&m_AnalysisyConfig);
m_strRootPath_MergeImg = "/home/aidlux/BOE/CELL_ET/MergeImg/";
m_strRootPath_MergeImg = "/home/aidlux/BOE/FOG/MergeImg/";
CheckUtil::CreateDir(m_strRootPath_MergeImg);
// m_pQX_Merge_Analysis = QX_Merge_Analysis::GetInstance();
}
@ -255,7 +255,7 @@ int CameraCheckAnalysisy::Detect_Images()
}
else
{
printf("Cam Detect_Images %s ==================No send end\n", strBasic.c_str());
// printf("Cam Detect_Images %s ==================No send end\n", strBasic.c_str());
}
}
}
@ -344,7 +344,7 @@ int CameraCheckAnalysisy::ResultParamJudge()
long t2 = CheckUtil::getcurTime();
m_imageResultJudge.DrawResult(m_pCheck_Result->ImageALLDetResultList.at(imgidx));
long t3 = CheckUtil::getcurTime();
m_pdetlog->AddCheckstr(PrintLevel_1, "ResultParamJudge", " det time %ld ms judge %ld draw %ld", t3 - t1, t2 - t1, t3 - t2);
// m_pdetlog->AddCheckstr(PrintLevel_1, "ResultParamJudge", " det time %ld ms judge %ld draw %ld", t3 - t1, t2 - t1, t3 - t2);
// 把结果转成 json 保存。 用以复测
std::shared_ptr<CheckResult> m_CheckResult_shareP = m_pCheck_Result->ImageALLDetResultList.at(imgidx)->result;
@ -767,7 +767,7 @@ int CameraCheckAnalysisy::CheckImgRun()
m_pdetlog->bPrintStr = false;
m_pdetlog->AddCheckstr(PrintLevel_1, "CheckImgRun", "Cam %s ------Product_Off_X_mm %f ",
m_strcameraName.c_str(), m_AnalysisyConfig.commonCheckConfig.baseConfig.fProduct_Off_X_mm);
m_pdetlog->bPrintStr = true;
// 如果是未检测状态,则开始预处理
if (curcheckStep == Check_Step_NODet)
{

@ -64,7 +64,7 @@ int CameraResult::AddDetImage(std::shared_ptr<shareImage> p)
}
}
std::string strTimg = CheckUtil::getCurTimeHMS();
detlog->bPrintStr = false;
detlog->bPrintStr = true;
detlog->AddCheckstr(PrintLevel_0, "PushInImg", " product %s Cam %s add new image channel = %s sum img %ld %s",
productBaseResult->strproductName.c_str(),
cameraBaseResult->strCameraName.c_str(), imgResult->strChannel.c_str(), ImageALLDetResultList.size(), strTimg.c_str());

@ -38,7 +38,7 @@ int Edge_Search::Detect(const cv::Mat &detimg, DetConfigResult *pDetConfig, std:
m_pdetlog = pDetConfig->pdetlog;
if (pDetConfig->bDebugsaveImg)
{
m_pdetlog->bPrintStr = false;
m_pdetlog->bPrintStr = true;
}
int re = 0;
bool bdraw = pDetConfig->pEdgeROI->Use_DrawROI;

@ -590,6 +590,8 @@ int ImageResultJudge::ResultJudge(std::shared_ptr<ImageAllResult> pImageResult)
tem.strTypeName = QX_Result_Names[nqx_type];
tem.qx_Code = QX_Result_Code[nqx_type];
tem.srcImgroi = roi;
tem.srcImgroi.x += pDetResult->CutRoi.x;
tem.srcImgroi.y += pDetResult->CutRoi.y;
tem.len = flen;
tem.qx_type = 0;
tem.fScore = 0;
@ -637,6 +639,9 @@ int ImageResultJudge::ResultJudge(std::shared_ptr<ImageAllResult> pImageResult)
m_CheckResult_shareP->YS_ImageResult.push_back(tem);
}
pQxLog->AddCheckstr(PrintLevel_4, DET_LOG_LEVEL_3, " result ", " name %s ---code %s", tem.strTypeName.c_str(), tem.qx_Code.c_str());
}
// 对于大面积 的zara和 异显NG ,可以不接着分析后续的数据了。应为后续估计有很多错误类别。
@ -842,6 +847,8 @@ int ImageResultJudge::MergeResult(std::shared_ptr<ImageAllResult> pImageResult,
tem.strTypeName = QX_Result_Names[nqx_type];
tem.qx_Code = QX_Result_Code[nqx_type];
tem.srcImgroi = roi;
tem.srcImgroi.x += pDetResult->CutRoi.x;
tem.srcImgroi.y += pDetResult->CutRoi.y;
tem.len = flen;
tem.qx_type = ptemre->resultList.at(iqx).error_Type;
tem.minDis_mm = ptemre->resultList.at(iqx).mindis;
@ -1246,137 +1253,116 @@ int ImageResultJudge::GetParamidx()
int ImageResultJudge::ConfigTypeToResultType(int nconfigType)
{
// CONFIG_QX_NAME_ok_yisi, // 疑似
// CONFIG_QX_NAME_AD_YX, // AD异显(P6873)
// CONFIG_QX_NAME_X_line, // X_line(P3351)
// CONFIG_QX_NAME_Y_line, // Y_line(P3452)
// CONFIG_QX_NAME_Broken_line, // 断线(P3379)
// CONFIG_QX_NAME_zara, // ZARA(P1153)
// CONFIG_QX_NAME_MTX, // MTX(P1164)
// CONFIG_QX_NAME_POL_Cell, // 异物(P1101)
// CONFIG_QX_NAME_LD, // 亮点(P1112)
// CONFIG_QX_NAME_AD, // 暗点(P1111)
// CONFIG_QX_NAME_Scratch_L1, // 一级 轻 划伤(P1557)
// CONFIG_QX_NAME_Scratch_L2, // 二级 严重 划伤(P1557)
// CONFIG_QX_NAME_Dirty_L0, // 疑似浅层脏污(P0000)
// CONFIG_QX_NAME_Dirty_L1, // 轻脏污(P0000)
// CONFIG_QX_NAME_Dirty_L2, // 严重脏污(P0000)
// CONFIG_QX_NAME_qipao, // 气泡(P0001)
// CONFIG_QX_NAME_PS, // ps(P0002)
// CONFIG_QX_NAME_Weak_Bright_Mura, // 白GAP(P1654)
// CONFIG_QX_NAME_No_Label, // 缺POL(P2833)
// ERROR_TYPE_OK, // 0 疑是
// ERROR_TYPE_AD_YX, // 1 AD-异常显示
// ERROR_TYPE_Line_X, // 2 x line
// ERROR_TYPE_Line_Y, // 3 y line
// ERROR_TYPE_Rubbing_Mura, // 4
// ERROR_TYPE_line_Broken, // 5 断线
// ERROR_TYPE_ZARA, // 6 ZARA
// ERROR_TYPE_MTX, // 7 MTX
// ERROR_TYPE_POL_Cell, // 8 异物
// ERROR_TYPE_LD, // 9 亮点
// ERROR_TYPE_AD, // 10 暗点
// ERROR_TYPE_BD, // 11 黑点
// ERROR_TYPE_WD, // 12 白点
// ERROR_TYPE_Scratch, // 13 划伤
// ERROR_TYPE_Weak_Bright_Mura, // 14 白GAP
// ERROR_TYPE_No_Label, // 15 缺POL
// ERROR_TYPE_PS, // 16 PS
// ERROR_TYPE_GRID_LINE, // 17 方格线
// ERROR_TYPE_STEAM_POCKET, // 19 气泡
// ERROR_TYPE_Dirty, // 19 脏污
bool bdesc = false;
int resultError_type = ERROR_TYPE_OK;
switch (nconfigType)
if(nconfigType < CONFIG_QX_NAME_Names.size())
{
case CONFIG_QX_NAME_ok_yisi:
resultError_type = ERROR_TYPE_OK;
break;
case CONFIG_QX_NAME_AD_YX:
resultError_type = ERROR_TYPE_AD_YX;
break;
case CONFIG_QX_NAME_Class_AD_YX:
resultError_type = ERROR_TYPE_AD_YX;
break;
case CONFIG_QX_NAME_X_line:
resultError_type = ERROR_TYPE_Line_X;
break;
case CONFIG_QX_NAME_Y_line:
resultError_type = ERROR_TYPE_Line_Y;
break;
case CONFIG_QX_NAME_Fangge:
resultError_type = ERROR_TYPE_Line_fangge;
break;
case CONFIG_QX_NAME_Broken_line:
resultError_type = ERROR_TYPE_line_Broken;
break;
case CONFIG_QX_NAME_zara:
resultError_type = ERROR_TYPE_ZARA;
break;
case CONFIG_QX_NAME_MTX:
resultError_type = ERROR_TYPE_MTX;
break;
case CONFIG_QX_NAME_POL_Cell:
resultError_type = ERROR_TYPE_POL_Cell;
break;
case CONFIG_QX_NAME_LD:
resultError_type = ERROR_TYPE_LD;
break;
case CONFIG_QX_NAME_AD:
resultError_type = ERROR_TYPE_AD;
break;
case CONFIG_QX_NAME_Scratch_L1:
resultError_type = ERROR_TYPE_Scratch;
break;
case CONFIG_QX_NAME_Scratch_L2:
resultError_type = ERROR_TYPE_Scratch;
break;
case CONFIG_QX_NAME_Dirty_L0:
resultError_type = ERROR_TYPE_Dirty;
break;
case CONFIG_QX_NAME_Dirty_L1:
resultError_type = ERROR_TYPE_Dirty;
break;
case CONFIG_QX_NAME_Dirty_L2:
resultError_type = ERROR_TYPE_Dirty;
break;
case CONFIG_QX_NAME_qipao:
resultError_type = ERROR_TYPE_STEAM_POCKET;
break;
case CONFIG_QX_NAME_PS:
resultError_type = ERROR_TYPE_PS;
break;
case CONFIG_QX_NAME_Weak_Bright_Mura:
resultError_type = ERROR_TYPE_Weak_Bright_Mura;
break;
case CONFIG_QX_NAME_No_Label:
resultError_type = ERROR_TYPE_No_Label;
break;
case CONFIG_QX_NAME_Other:
resultError_type = ERROR_TYPE_Other;
break;
case CONFIG_QX_NAME_Chess:
resultError_type = ERROR_TYPE_Other;
break;
case CONFIG_QX_NAME_127Cell:
resultError_type = ERROR_TYPE_POL_Cell;
break;
case CONFIG_QX_NAME_white_Cell:
resultError_type = ERROR_TYPE_Cell_W;
break;
case CONFIG_QX_NAME_black_Cell:
resultError_type = ERROR_TYPE_Cell_B;
break;
case CONFIG_QX_NAME_LackPOL:
resultError_type = ERROR_TYPE_LackPol;
break;
default:
break;
string cqn = CONFIG_QX_NAME_Names[nconfigType];
for(int i = 0; i < m_FlawCodeList.size(); i++)
{
for(int j = 0; j < m_FlawCodeList.at(i).config_flaw_name.size(); j++)
{
if(cqn == m_FlawCodeList.at(i).config_flaw_name[j])
{
resultError_type = i;
bdesc = true;
break;
}
}
}
}
// 如果描述没有配置,用默认值
if(!bdesc)
{
int resultError_type = ERROR_TYPE_OK;
switch (nconfigType)
{
case CONFIG_QX_NAME_ok_yisi:
resultError_type = ERROR_TYPE_OK;
break;
case CONFIG_QX_NAME_AD_YX:
resultError_type = ERROR_TYPE_AD_YX;
break;
case CONFIG_QX_NAME_Class_AD_YX:
resultError_type = ERROR_TYPE_AD_YX;
break;
case CONFIG_QX_NAME_X_line:
resultError_type = ERROR_TYPE_Line_X;
break;
case CONFIG_QX_NAME_Y_line:
resultError_type = ERROR_TYPE_Line_Y;
break;
case CONFIG_QX_NAME_Fangge:
resultError_type = ERROR_TYPE_Line_fangge;
break;
case CONFIG_QX_NAME_Broken_line:
resultError_type = ERROR_TYPE_line_Broken;
break;
case CONFIG_QX_NAME_zara:
resultError_type = ERROR_TYPE_ZARA;
break;
case CONFIG_QX_NAME_MTX:
resultError_type = ERROR_TYPE_MTX;
break;
case CONFIG_QX_NAME_POL_Cell:
resultError_type = ERROR_TYPE_POL_Cell;
break;
case CONFIG_QX_NAME_LD:
resultError_type = ERROR_TYPE_LD;
break;
case CONFIG_QX_NAME_AD:
resultError_type = ERROR_TYPE_AD;
break;
case CONFIG_QX_NAME_Scratch_L1:
resultError_type = ERROR_TYPE_Scratch;
break;
case CONFIG_QX_NAME_Scratch_L2:
resultError_type = ERROR_TYPE_Scratch;
break;
case CONFIG_QX_NAME_Dirty_L0:
resultError_type = ERROR_TYPE_Dirty;
break;
case CONFIG_QX_NAME_Dirty_L1:
resultError_type = ERROR_TYPE_Dirty;
break;
case CONFIG_QX_NAME_Dirty_L2:
resultError_type = ERROR_TYPE_Dirty;
break;
case CONFIG_QX_NAME_qipao:
resultError_type = ERROR_TYPE_STEAM_POCKET;
break;
case CONFIG_QX_NAME_PS:
resultError_type = ERROR_TYPE_PS;
break;
case CONFIG_QX_NAME_Weak_Bright_Mura:
resultError_type = ERROR_TYPE_Weak_Bright_Mura;
break;
case CONFIG_QX_NAME_No_Label:
resultError_type = ERROR_TYPE_No_Label;
break;
case CONFIG_QX_NAME_Other:
resultError_type = ERROR_TYPE_Other;
break;
case CONFIG_QX_NAME_Chess:
resultError_type = ERROR_TYPE_Other;
break;
case CONFIG_QX_NAME_127Cell:
resultError_type = ERROR_TYPE_POL_Cell;
break;
case CONFIG_QX_NAME_white_Cell:
resultError_type = ERROR_TYPE_Cell_W;
break;
case CONFIG_QX_NAME_black_Cell:
resultError_type = ERROR_TYPE_Cell_B;
break;
case CONFIG_QX_NAME_LackPOL:
resultError_type = ERROR_TYPE_LackPol;
break;
default:
break;
}
}
return resultError_type;
return 0;
}
int ImageResultJudge::sendTask(std::shared_ptr<DrawInfo> task)

@ -30,8 +30,8 @@ ImgCheckAnalysisy::ImgCheckAnalysisy()
m_pbaseCheckFunction = &m_AnalysisyConfig.baseFunction;
m_strLastDate = "";
m_strRootPath_TA_cls = "/home/aidlux/BOE/CELL_ET/Cls/TA/";
m_strRootPath_CA_cls = "/home/aidlux/BOE/CELL_ET/Cls/CA/";
m_strRootPath_TA_cls = "/home/aidlux/BOE/FOG/Cls/TA/";
m_strRootPath_CA_cls = "/home/aidlux/BOE/FOG/Cls/CA/";
creatsavedir();
m_pImageStorage = ImageStorage::getInstance();
m_nConfigIdx = -1;
@ -423,7 +423,7 @@ int ImgCheckAnalysisy::CheckRun()
{
m_pdetlog->bPrintStr = true;
}
m_pdetlog->bPrintStr = false;
m_pdetlog->bPrintStr = true;
m_pdetlog->AddCheckstr(PrintLevel_0, "1、basic Info", "---------------------------1、basic Info---------------------------------");
m_pdetlog->AddCheckstr(PrintLevel_0, "Version", "%s", GetVersion().c_str());
@ -441,9 +441,9 @@ int ImgCheckAnalysisy::CheckRun()
m_strCurDetChannel = m_CheckResult_shareP->basicResult.strChannel;
m_strCurDetCamChannel = m_pImageAllResult->cameraBaseResult->strCameraName + "_" + m_strCurDetChannel;
cout << "Version: " << GetVersion() << endl;
cout << "CameraName: " << m_pImageAllResult->cameraBaseResult->strCameraName << endl;
cout << "strChannel: " << m_CheckResult_shareP->basicResult.strChannel<< endl;
// cout << "Version: " << GetVersion() << endl;
// cout << "CameraName: " << m_pImageAllResult->cameraBaseResult->strCameraName << endl;
// cout << "strChannel: " << m_CheckResult_shareP->basicResult.strChannel<< endl;
// 2、参数检查
int rec = ConfigCheck(DetImgInfo_shareP->img);

@ -34,7 +34,7 @@ std::shared_ptr<CameraResult> Product::GetCameraResult(std::string strcameraName
return ptr;
}
}
productBaseResult->detlog->bPrintStr = false;
productBaseResult->detlog->bPrintStr = true;
// 不存在,创建新的 CameraResult 并插入 map
std::shared_ptr<CameraResult> newResult = std::make_shared<CameraResult>();
newResult->productBaseResult = productBaseResult;

@ -2,7 +2,7 @@
cmake_minimum_required (VERSION 3.5)
project(rootproject)
set(CHECK_WORK_Value "CELL_ET")
set(CHECK_WORK_Value "FOG")
if (DEFINED WORK)
set(CHECK_WORK_Value ${WORK})

@ -30,7 +30,7 @@ set(ModuleName "")
# make install /usr/local
#
set(CMAKE_INSTALL_PREFIX /usr/local/cellet CACHE PATH "Install path prefix" FORCE)
set(CMAKE_INSTALL_PREFIX /usr/local/fog CACHE PATH "Install path prefix" FORCE)
set(HEADER_FILES include/ConfigBase.h)
#
install(TARGETS Config

@ -74,7 +74,7 @@ enum CONFIG_QX_NAME_
CONFIG_QX_NAME_count,
};
// 缺陷项对应在参数中的名称
static const std::string CONFIG_QX_NAME_Names[] =
static std::vector<std::string> CONFIG_QX_NAME_Names =
{
"ok_yisi",
"AD_YX",

@ -22,18 +22,18 @@ link_directories(
)
file(GLOB SRC_LISTS ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
add_executable("test_CELL_ET" ${SRC_LISTS})
add_executable("test_FOG" ${SRC_LISTS})
target_link_libraries("test_CELL_ET"
target_link_libraries("test_FOG"
pthread
z
nvinfer
CELL_ET_Check
FOG_Check
Config
${OpenCV_LIBS}
)
# RPATH
set_target_properties("test_CELL_ET" PROPERTIES
set_target_properties("test_FOG" PROPERTIES
BUILD_RPATH "\$ORIGIN"
)
set(ModuleName "")

@ -3,7 +3,7 @@
* @Date: 2025-07-25 09:14:25
* @LastEditors: xiewenji 527774126@qq.com
* @LastEditTime: 2025-09-23 17:49:42
* @FilePath: /BOE_CELL_ET/AlgorithmModule/example/Image_ReadAndChange.h
* @FilePath: /BOE_FOG/AlgorithmModule/example/Image_ReadAndChange.h
* @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
/*

@ -26,7 +26,7 @@
## 测试命令
```bash
./test_CELL_ET -f /home/aidlux/BOE_CELL_ET/Image/cell_et 图/ttt
./test_FOG -f /home/aidlux/BOE_FOG/Image/FOG 图/ttt
```
## 修改的文件

@ -443,7 +443,7 @@ int deal::preCheck()
std::shared_ptr<CheckResult> checkResult;
int re = m_pALLImgCheckAnalysisy->GetCheckReuslt(checkResult);
saveImg("/home/aidlux/BOE/CELL_ET/testresult/", checkResult);
saveImg("/home/aidlux/BOE/FOG/testresult/", checkResult);
getresultNum++;
if (getresultNum == m_nProductSuccessCount)
{
@ -812,7 +812,7 @@ void deal::ResultThread(int id)
if (true)
{
// 存图
std::string savepath = "/home/aidlux/BOE/CELL_ET/Detsave/";
std::string savepath = "/home/aidlux/BOE/FOG/Detsave/";
saveImg(savepath, dealResult);
// saveImg("/home/aidlux/BOE/ResultImg/", dealResult);
}
@ -821,7 +821,7 @@ void deal::ResultThread(int id)
// 存 检测统计 日志
mutex_DetResult_.lock();
m_DetResult.print(false);
std::string strlog = "/home/aidlux/BOE/CELL_ET/ResultImg/";
std::string strlog = "/home/aidlux/BOE/FOG/ResultImg/";
if (m_strCurDate != "")
{
strlog += m_strCurDate;

@ -25,7 +25,7 @@
- Detailed error logging
## Test Command
./test_CELL_ET -f /path/to/images
./test_FOG -f /path/to/images
## Modified Files
- example/deal.h - Removed unused members, added condition variables

@ -79,7 +79,7 @@ void test_LoadImage()
printf("╚═══════════════════════════════════════════════════════════\n");
printf("\n");
std::string root_dir = "/home/aidlux/BOE_CELL_ET/Image/20250718";
std::string root_dir = "/home/aidlux/BOE_FOG/Image/20250718";
printf("测试目录:%s\n\n", root_dir.c_str());
LoadImage loader;

Loading…
Cancel
Save