Compare commits

...

3 Commits

@ -43,7 +43,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_NF = AIModel_Base::GetInstance(); AI_defect_NF = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "Base_detect"; boe_config.strName = "Base_detect";
boe_config.Stream_num = 2; boe_config.Stream_num = 2;
@ -55,7 +55,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Type2 = AIModel_Base::GetInstance(); AI_defect_Type2 = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "WTB_detect"; boe_config.strName = "WTB_detect";
boe_config.Stream_num = 2; boe_config.Stream_num = 2;
@ -67,7 +67,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_UP = AIModel_Base::GetInstance(); AI_defect_UP = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "UP_detect"; boe_config.strName = "UP_detect";
boe_config.Stream_num = 2; boe_config.Stream_num = 2;
@ -79,7 +79,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Chess = AIModel_Base::GetInstance(); AI_defect_Chess = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "chess_detect"; boe_config.strName = "chess_detect";
boe_config.Stream_num = 2; boe_config.Stream_num = 2;
@ -91,7 +91,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_YX_1 = AIModel_Base::GetInstance(); AI_defect_YX_1 = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.strName = "YX1";
boe_config.inputType = AIModel_Base::Input_CHW; boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_YX_1->Init(boe_config); AI_defect_YX_1->Init(boe_config);
@ -101,7 +101,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_YX_2 = AIModel_Base::GetInstance(); AI_defect_YX_2 = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.strName = "YX2";
boe_config.inputType = AIModel_Base::Input_CHW; boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_YX_2->Init(boe_config); AI_defect_YX_2->Init(boe_config);
@ -113,7 +113,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Cls_L0 = AIModel_Base::GetInstance(); AI_defect_Cls_L0 = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config jbl_config; AIModel_Base::AIModelRun_Config jbl_config;
jbl_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_HWC;
jbl_config.strName = "14_Class"; jbl_config.strName = "14_Class";
jbl_config.IsClass = true; jbl_config.IsClass = true;
@ -125,7 +125,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Cls = AIModel_Base::GetInstance(); AI_defect_Cls = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config jbl_config; AIModel_Base::AIModelRun_Config jbl_config;
jbl_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_HWC;
jbl_config.strName = "old_Class"; jbl_config.strName = "old_Class";
jbl_config.IsClass = true; jbl_config.IsClass = true;
@ -138,7 +138,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_zf = AIModel_Base::GetInstance(); AI_defect_zf = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.strName = "zf";
boe_config.inputType = AIModel_Base::Input_CHW; boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_zf->Init(boe_config); AI_defect_zf->Init(boe_config);
@ -149,7 +149,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_127Cell = AIModel_Base::GetInstance(); AI_defect_127Cell = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.strName = "127Cell";
boe_config.inputType = AIModel_Base::Input_CHW; boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_127Cell->Init(boe_config); AI_defect_127Cell->Init(boe_config);
@ -160,7 +160,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_RE_POL = AIModel_Base::GetInstance(); AI_defect_RE_POL = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.strName = "RE_POL";
boe_config.inputType = AIModel_Base::Input_CHW; boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_RE_POL->Init(boe_config); AI_defect_RE_POL->Init(boe_config);
@ -171,7 +171,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_RE_AD = AIModel_Base::GetInstance(); AI_defect_RE_AD = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.strName = "RE_POL";
boe_config.inputType = AIModel_Base::Input_CHW; boe_config.inputType = AIModel_Base::Input_CHW;
AI_defect_RE_AD->Init(boe_config); AI_defect_RE_AD->Init(boe_config);
@ -183,7 +183,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Edge_Big = AIModel_Base::GetInstance(); AI_defect_Edge_Big = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.strName = "Edge_Big";
boe_config.inputType = AIModel_Base::Input_HWC; boe_config.inputType = AIModel_Base::Input_HWC;
AI_defect_Edge_Big->Init(boe_config); AI_defect_Edge_Big->Init(boe_config);
@ -194,7 +194,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Edge_Samll = AIModel_Base::GetInstance(); AI_defect_Edge_Samll = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_HWC;
boe_config.strName = "Edge_Small"; boe_config.strName = "Edge_Small";
AI_defect_Edge_Samll->Init(boe_config); AI_defect_Edge_Samll->Init(boe_config);
@ -205,7 +205,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_LackPol = AIModel_Base::GetInstance(); AI_defect_LackPol = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "BOE_LOSSPOL"; boe_config.strName = "BOE_LOSSPOL";
AI_defect_LackPol->Init(boe_config); AI_defect_LackPol->Init(boe_config);
@ -216,7 +216,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_MarkLine = AIModel_Base::GetInstance(); AI_defect_MarkLine = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "MarkLine"; boe_config.strName = "MarkLine";
AI_defect_MarkLine->Init(boe_config); AI_defect_MarkLine->Init(boe_config);
@ -227,7 +227,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig)
AI_defect_Edge_QX = AIModel_Base::GetInstance(); AI_defect_Edge_QX = AIModel_Base::GetInstance();
AIModel_Base::AIModelRun_Config boe_config; AIModel_Base::AIModelRun_Config boe_config;
boe_config.gpuconfig.copy(gupconfig); 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.inputType = AIModel_Base::Input_CHW;
boe_config.strName = "Edge_QX"; boe_config.strName = "Edge_QX";
AI_defect_Edge_QX->Init(boe_config); AI_defect_Edge_QX->Init(boe_config);

@ -69,9 +69,9 @@ file(GLOB_RECURSE SRC_LISTS
${PROJECT_SOURCE_DIR}/AIEngineModule/src/*.cu ${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 nvinfer
Config Config
${OpenCV_LIBS} ${OpenCV_LIBS}
@ -83,10 +83,10 @@ set(ModuleName "")
# make install /usr/local # 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) 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 LIBRARY DESTINATION lib # CMAKE_INSTALL_PREFIX/lib
ARCHIVE DESTINATION lib/static ARCHIVE DESTINATION lib/static
RUNTIME DESTINATION bin RUNTIME DESTINATION bin

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

@ -74,61 +74,9 @@ enum ERROR_TYPE_
ERROR_TYPE_LackPol, // 缺失Pol ERROR_TYPE_LackPol, // 缺失Pol
ERROR_TYPE_COUNT, ERROR_TYPE_COUNT,
}; };
static const std::string QX_Result_Names[] = extern std::vector<std::string> QX_Result_Names;
{ extern std::vector<std::string> QX_Result_Code;
"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",
};
// 检测检测参数类型 // 检测检测参数类型
enum CHECK_CONFIG_TYPE_ enum CHECK_CONFIG_TYPE_
{ {
@ -172,6 +120,20 @@ enum DET_MODE_
#define MAX_REGION_NUM 20 #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 struct shareImage
{ {

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

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

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

@ -6,7 +6,7 @@
AI_Mark_Det::AI_Mark_Det() AI_Mark_Det::AI_Mark_Det()
{ {
m_bModelSucc = false; m_bModelSucc = false;
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/MarkLine/"); CheckUtil::CreateDir("/home/aidlux/BOE/FOG/MarkLine/");
m_pImageStorage = ImageStorage::getInstance(); m_pImageStorage = ImageStorage::getInstance();
m_Show_Area = 0; m_Show_Area = 0;
m_Show_Len = 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) if (pDetConfig->bDebugsaveimg || pDetConfig->bDetSaveImg)
{ {
std::string str12 = "/home/aidlux/BOE/CELL_ET/MarkLine/" + pDetConfig->strCamName + "_" + std::to_string(ki) + "_in.png"; std::string str12 = "/home/aidlux/BOE/FOG/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 strmask = "/home/aidlux/BOE/FOG/MarkLine/" + pDetConfig->strCamName + "_" + std::to_string(ki) + "_in_mask.png";
if (pDetConfig->bDebugsaveimg) if (pDetConfig->bDebugsaveimg)
{ {
str12 = pDetConfig->strCamName + "_" + std::to_string(ki) + "_in.png"; 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) if (pDetConfig->bDebugsaveimg || pDetConfig->bDetSaveImg)
{ {
std::string str12 = "/home/aidlux/BOE/CELL_ET/MarkLine/Check_big_" + pDetConfig->strCamName + "_in.png"; std::string str12 = "/home/aidlux/BOE/FOG/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 strmask = "/home/aidlux/BOE/FOG/MarkLine/Check_big_" + pDetConfig->strCamName + "_in_mask.png";
if (pDetConfig->bDebugsaveimg) if (pDetConfig->bDebugsaveimg)
{ {
str12 = "Check_big_" + pDetConfig->strCamName + "_" + std::to_string(ki) + "_in.png"; 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_AD = false;
m_bModelSucc_POL = false; m_bModelSucc_POL = false;
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/Second/POL/"); CheckUtil::CreateDir("/home/aidlux/BOE/FOG/Second/POL/");
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/Second/AD/"); CheckUtil::CreateDir("/home/aidlux/BOE/FOG/Second/AD/");
m_pImageStorage = ImageStorage::getInstance(); m_pImageStorage = ImageStorage::getInstance();
m_Show_Area = 0; m_Show_Area = 0;
m_Show_Len = 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; 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) 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() AI_ZF_Det::AI_ZF_Det()
{ {
m_bModelSucc = false; m_bModelSucc = false;
CheckUtil::CreateDir("/home/aidlux/BOE/CELL_ET/zf/"); CheckUtil::CreateDir("/home/aidlux/BOE/FOG/zf/");
m_pImageStorage = ImageStorage::getInstance(); m_pImageStorage = ImageStorage::getInstance();
m_Show_Area = 0; m_Show_Area = 0;
m_Show_Len = 0; m_Show_Len = 0;

@ -10,6 +10,126 @@
#include "CheckUtil.hpp" #include "CheckUtil.hpp"
#include "Define.h" #include "Define.h"
#include "AI_Factory.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) double calculateDistanceBetweenRectCenters(const cv::Rect &rect1, const cv::Rect &rect2, float fx, float fy)
{ {
// 计算矩形1的中心点 // 计算矩形1的中心点
@ -309,6 +429,7 @@ int ALLImgCheckAnalysisy::ExitSystem()
int ALLImgCheckAnalysisy::InitCameraCheckAnalysisy() int ALLImgCheckAnalysisy::InitCameraCheckAnalysisy()
{ {
ReadFlawCodeConfig("/var/aidlux/efs/cell_aoi/model/defect_list.json");
m_pCameraCheckAnalysisyList.clear(); m_pCameraCheckAnalysisyList.clear();
// m_pQX_Merge_Analysis->Clear(); // m_pQX_Merge_Analysis->Clear();
for (const auto &config : m_pConfigManager->Config_instances_) for (const auto &config : m_pConfigManager->Config_instances_)
@ -545,9 +666,14 @@ int ALLImgCheckAnalysisy::PushInImg_New(std::shared_ptr<shareImage> p)
strlog += "isnot exist"; strlog += "isnot exist";
//设置其他m_ProductList送图状态设置为结束 //设置其他m_ProductList送图状态设置为结束
cout << "-------set m_ProductList other product to end-------" << endl ; cout << "-------set m_ProductList other product to end-------" << endl ;
std::lock_guard<std::mutex> lock(mtx_ProductList);
for(auto &tem:m_ProductList){ for(auto &tem:m_ProductList){
tem->bIsImgComplete = true; 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) if (m_ProductList.size() > 50)
{ {
Clear_m_ProductList();
return CHECK_ERROR_PushImg_ListSize; return CHECK_ERROR_PushImg_ListSize;
} }
} }
strlog += " | create new product"; strlog += " | create new product";
product = std::make_shared<Product>(); product = std::make_shared<Product>();
product->productBaseResult->strproductName = p->strImgProductID; product->productBaseResult->strproductName = p->strImgProductID;
if (m_CurProductIdx > 999999)
{
m_CurProductIdx = 0;
}
product->productUseCount = m_CurProductIdx;
m_CurProductIdx++;
m_ProductList.push_back(product); m_ProductList.push_back(product);
std::string strTimg = CheckUtil::getCurTimeHMS(); std::string strTimg = CheckUtil::getCurTimeHMS();
product->productBaseResult->detlog->bPrintStr = true; product->productBaseResult->detlog->bPrintStr = true;
@ -687,7 +819,26 @@ int ALLImgCheckAnalysisy::MergeShowImg(std::shared_ptr<Product> product)
return 0; 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() int ALLImgCheckAnalysisy::Run()
{ {

@ -34,7 +34,7 @@ CameraCheckAnalysisy::CameraCheckAnalysisy()
m_pCommonAnalysisyConfig = NULL; m_pCommonAnalysisyConfig = NULL;
m_imageResultJudge.SetAnalysisyConfig(&m_AnalysisyConfig); 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); CheckUtil::CreateDir(m_strRootPath_MergeImg);
// m_pQX_Merge_Analysis = QX_Merge_Analysis::GetInstance(); // m_pQX_Merge_Analysis = QX_Merge_Analysis::GetInstance();
} }
@ -255,7 +255,7 @@ int CameraCheckAnalysisy::Detect_Images()
} }
else 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(); long t2 = CheckUtil::getcurTime();
m_imageResultJudge.DrawResult(m_pCheck_Result->ImageALLDetResultList.at(imgidx)); m_imageResultJudge.DrawResult(m_pCheck_Result->ImageALLDetResultList.at(imgidx));
long t3 = CheckUtil::getcurTime(); 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 保存。 用以复测 // 把结果转成 json 保存。 用以复测
std::shared_ptr<CheckResult> m_CheckResult_shareP = m_pCheck_Result->ImageALLDetResultList.at(imgidx)->result; 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->bPrintStr = false;
m_pdetlog->AddCheckstr(PrintLevel_1, "CheckImgRun", "Cam %s ------Product_Off_X_mm %f ", 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_strcameraName.c_str(), m_AnalysisyConfig.commonCheckConfig.baseConfig.fProduct_Off_X_mm);
m_pdetlog->bPrintStr = true;
// 如果是未检测状态,则开始预处理 // 如果是未检测状态,则开始预处理
if (curcheckStep == Check_Step_NODet) if (curcheckStep == Check_Step_NODet)
{ {

@ -64,7 +64,7 @@ int CameraResult::AddDetImage(std::shared_ptr<shareImage> p)
} }
} }
std::string strTimg = CheckUtil::getCurTimeHMS(); 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", detlog->AddCheckstr(PrintLevel_0, "PushInImg", " product %s Cam %s add new image channel = %s sum img %ld %s",
productBaseResult->strproductName.c_str(), productBaseResult->strproductName.c_str(),
cameraBaseResult->strCameraName.c_str(), imgResult->strChannel.c_str(), ImageALLDetResultList.size(), strTimg.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; m_pdetlog = pDetConfig->pdetlog;
if (pDetConfig->bDebugsaveImg) if (pDetConfig->bDebugsaveImg)
{ {
m_pdetlog->bPrintStr = false; m_pdetlog->bPrintStr = true;
} }
int re = 0; int re = 0;
bool bdraw = pDetConfig->pEdgeROI->Use_DrawROI; 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.strTypeName = QX_Result_Names[nqx_type];
tem.qx_Code = QX_Result_Code[nqx_type]; tem.qx_Code = QX_Result_Code[nqx_type];
tem.srcImgroi = roi; tem.srcImgroi = roi;
tem.srcImgroi.x += pDetResult->CutRoi.x;
tem.srcImgroi.y += pDetResult->CutRoi.y;
tem.len = flen; tem.len = flen;
tem.qx_type = 0; tem.qx_type = 0;
tem.fScore = 0; tem.fScore = 0;
@ -637,6 +639,9 @@ int ImageResultJudge::ResultJudge(std::shared_ptr<ImageAllResult> pImageResult)
m_CheckResult_shareP->YS_ImageResult.push_back(tem); 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 ,可以不接着分析后续的数据了。应为后续估计有很多错误类别。 // 对于大面积 的zara和 异显NG ,可以不接着分析后续的数据了。应为后续估计有很多错误类别。
@ -842,6 +847,8 @@ int ImageResultJudge::MergeResult(std::shared_ptr<ImageAllResult> pImageResult,
tem.strTypeName = QX_Result_Names[nqx_type]; tem.strTypeName = QX_Result_Names[nqx_type];
tem.qx_Code = QX_Result_Code[nqx_type]; tem.qx_Code = QX_Result_Code[nqx_type];
tem.srcImgroi = roi; tem.srcImgroi = roi;
tem.srcImgroi.x += pDetResult->CutRoi.x;
tem.srcImgroi.y += pDetResult->CutRoi.y;
tem.len = flen; tem.len = flen;
tem.qx_type = ptemre->resultList.at(iqx).error_Type; tem.qx_type = ptemre->resultList.at(iqx).error_Type;
tem.minDis_mm = ptemre->resultList.at(iqx).mindis; tem.minDis_mm = ptemre->resultList.at(iqx).mindis;
@ -1246,48 +1253,27 @@ int ImageResultJudge::GetParamidx()
int ImageResultJudge::ConfigTypeToResultType(int nconfigType) int ImageResultJudge::ConfigTypeToResultType(int nconfigType)
{ {
bool bdesc = false;
// CONFIG_QX_NAME_ok_yisi, // 疑似 int resultError_type = ERROR_TYPE_OK;
// CONFIG_QX_NAME_AD_YX, // AD异显(P6873) if(nconfigType < CONFIG_QX_NAME_Names.size())
// CONFIG_QX_NAME_X_line, // X_line(P3351) {
// CONFIG_QX_NAME_Y_line, // Y_line(P3452) string cqn = CONFIG_QX_NAME_Names[nconfigType];
// CONFIG_QX_NAME_Broken_line, // 断线(P3379) for(int i = 0; i < m_FlawCodeList.size(); i++)
// CONFIG_QX_NAME_zara, // ZARA(P1153) {
// CONFIG_QX_NAME_MTX, // MTX(P1164) for(int j = 0; j < m_FlawCodeList.at(i).config_flaw_name.size(); j++)
// CONFIG_QX_NAME_POL_Cell, // 异物(P1101) {
// CONFIG_QX_NAME_LD, // 亮点(P1112) if(cqn == m_FlawCodeList.at(i).config_flaw_name[j])
// CONFIG_QX_NAME_AD, // 暗点(P1111) {
// CONFIG_QX_NAME_Scratch_L1, // 一级 轻 划伤(P1557) resultError_type = i;
// CONFIG_QX_NAME_Scratch_L2, // 二级 严重 划伤(P1557) bdesc = true;
// CONFIG_QX_NAME_Dirty_L0, // 疑似浅层脏污(P0000) break;
// 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) if(!bdesc)
{
// 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 脏污
int resultError_type = ERROR_TYPE_OK; int resultError_type = ERROR_TYPE_OK;
switch (nconfigType) switch (nconfigType)
{ {
@ -1375,8 +1361,8 @@ int ImageResultJudge::ConfigTypeToResultType(int nconfigType)
default: default:
break; break;
} }
}
return resultError_type; return resultError_type;
return 0;
} }
int ImageResultJudge::sendTask(std::shared_ptr<DrawInfo> task) int ImageResultJudge::sendTask(std::shared_ptr<DrawInfo> task)

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

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

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

@ -30,7 +30,7 @@ set(ModuleName "")
# make install /usr/local # 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) set(HEADER_FILES include/ConfigBase.h)
# #
install(TARGETS Config install(TARGETS Config

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

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

@ -3,7 +3,7 @@
* @Date: 2025-07-25 09:14:25 * @Date: 2025-07-25 09:14:25
* @LastEditors: xiewenji 527774126@qq.com * @LastEditors: xiewenji 527774126@qq.com
* @LastEditTime: 2025-09-23 17:49:42 * @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 * @Description: ,`customMade`, koroFileHeader : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
/* /*

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

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

@ -79,7 +79,7 @@ void test_LoadImage()
printf("╚═══════════════════════════════════════════════════════════\n"); printf("╚═══════════════════════════════════════════════════════════\n");
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()); printf("测试目录:%s\n\n", root_dir.c_str());
LoadImage loader; LoadImage loader;

Loading…
Cancel
Save