修改NG/OK结果合并处理功能,NG/OK结果可以单独处理

CigaretteSH
Flamingo 6 months ago
parent eef068972b
commit 43303c2842

@ -2892,12 +2892,8 @@ void Cigarette::init_plc_value()
void Cigarette::CreatWorkThread(int classid, int Num, Cigarette* classptr) void Cigarette::CreatWorkThread(int classid, int Num, Cigarette* classptr)
{ {
int CamId = Num;
#ifdef SYNC_CAMERA #ifdef SYNC_CAMERA
#ifdef IS_CAM_NG_OK_DATA_MERGED sync_work_thread.init(g_image_sync_queue, g_result_queue, 0); // 默认使用第一个相机的数据
CamId = 0; // 默认使用第一个相机的数据
#endif
sync_work_thread.init(g_image_sync_queue, g_result_queue[CamId]);
connect(&sync_work_thread, SIGNAL(notify(int, int, cv::Mat)), classptr, SLOT(OnNotifyHub(int, int, cv::Mat))); connect(&sync_work_thread, SIGNAL(notify(int, int, cv::Mat)), classptr, SLOT(OnNotifyHub(int, int, cv::Mat)));
connect(&sync_work_thread, SIGNAL(display_timecost(int, int)), classptr, SLOT(OnDisplayTimeCostHub(int, int))); connect(&sync_work_thread, SIGNAL(display_timecost(int, int)), classptr, SLOT(OnDisplayTimeCostHub(int, int)));
connect(&sync_work_thread, SIGNAL(display_check_total(int, long)), classptr, SLOT(OnDisplayCheckNumberHub(int, long))); connect(&sync_work_thread, SIGNAL(display_check_total(int, long)), classptr, SLOT(OnDisplayCheckNumberHub(int, long)));
@ -2906,18 +2902,18 @@ void Cigarette::CreatWorkThread(int classid, int Num, Cigarette* classptr)
connect(&sync_work_thread, SIGNAL(event_ng(int)), classptr, SLOT(OnNGHub(int))); connect(&sync_work_thread, SIGNAL(event_ng(int)), classptr, SLOT(OnNGHub(int)));
sync_work_thread.start_work(); sync_work_thread.start_work();
#else #else
work_thread[CamId].init(g_image_queue[CamId], g_result_queue[CamId], classid, CamId); work_thread[Num].init(g_image_queue[Num], g_result_queue[Num], classid, Num);
connect(&work_thread[CamId], SIGNAL(notify(int, int, cv::Mat)), classptr, SLOT(OnNotifyHub(int, int, cv::Mat))); connect(&work_thread[Num], SIGNAL(notify(int, int, cv::Mat)), classptr, SLOT(OnNotifyHub(int, int, cv::Mat)));
connect(&work_thread[CamId], SIGNAL(display_timecost(int, int)), classptr, SLOT(OnDisplayTimeCostHub(int, int))); connect(&work_thread[Num], SIGNAL(display_timecost(int, int)), classptr, SLOT(OnDisplayTimeCostHub(int, int)));
connect(&work_thread[CamId], SIGNAL(display_check_total(int, long)), classptr, SLOT(OnDisplayCheckNumberHub(int, long))); connect(&work_thread[Num], SIGNAL(display_check_total(int, long)), classptr, SLOT(OnDisplayCheckNumberHub(int, long)));
connect(&work_thread[CamId], SIGNAL(display_jd_no(int, QString)), classptr, SLOT(OnDisplayJdNoHub(int, QString))); connect(&work_thread[Num], SIGNAL(display_jd_no(int, QString)), classptr, SLOT(OnDisplayJdNoHub(int, QString)));
connect(&work_thread[CamId], SIGNAL(event_ok(int)), classptr, SLOT(OnOKHub(int))); connect(&work_thread[Num], SIGNAL(event_ok(int)), classptr, SLOT(OnOKHub(int)));
connect(&work_thread[CamId], SIGNAL(event_ng(int)), classptr, SLOT(OnNGHub(int))); connect(&work_thread[Num], SIGNAL(event_ng(int)), classptr, SLOT(OnNGHub(int)));
work_thread[CamId].start_work(); work_thread[Num].start_work();
debug_thread[CamId].init(g_debug_queue[CamId], CamId); debug_thread[Num].init(g_debug_queue[Num], Num);
connect(&debug_thread[CamId], SIGNAL(notify(int, int, cv::Mat)), classptr, SLOT(OnNotifyHub(int, int, cv::Mat))); connect(&debug_thread[Num], SIGNAL(notify(int, int, cv::Mat)), classptr, SLOT(OnNotifyHub(int, int, cv::Mat)));
debug_thread[CamId].start_work(); debug_thread[Num].start_work();
#endif #endif
} }

@ -43,11 +43,12 @@ SyncWorkThread::~SyncWorkThread()
wait(); wait();
} }
void SyncWorkThread::init(SyncQueue<std::vector<std::pair<int, cv::Mat>>>* image_ptr, ASyncQueue<bool>* result_ptr) void SyncWorkThread::init(SyncQueue<std::vector<std::pair<int, cv::Mat>>>* image_ptr, ASyncQueue<bool>* result_ptr[], int MergeToCamId)
{ {
local_g_image_sync_queue = image_ptr; local_g_image_sync_queue = image_ptr;
local_g_result_queue = result_ptr; local_g_result_queue = result_ptr;
b_quit = false; b_quit = false;
MergeToCamId = MergeToCamId;
for (int i = 0; i < NumberOfSupportedCameras; i++) { for (int i = 0; i < NumberOfSupportedCameras; i++) {
frame_total[i] = 0; frame_total[i] = 0;
} }
@ -70,7 +71,9 @@ void SyncWorkThread::run()
QDateTime now_ts = QDateTime::currentDateTime(); QDateTime now_ts = QDateTime::currentDateTime();
std::vector<std::pair<int, cv::Mat>> element_vec; std::vector<std::pair<int, cv::Mat>> element_vec;
local_g_image_sync_queue->take(element_vec); local_g_image_sync_queue->take(element_vec);
#ifdef IS_CAM_NG_OK_DATA_MERGED
bool IsNGForAll = false; bool IsNGForAll = false;
#endif
int merge_index; int merge_index;
cv::Mat merge_image = cv::Mat::zeros(image_h * g_sys_conf.shoot[0], image_w * work_camera_nums, CV_8UC3);//640*work_camera_nums cv::Mat merge_image = cv::Mat::zeros(image_h * g_sys_conf.shoot[0], image_w * work_camera_nums, CV_8UC3);//640*work_camera_nums
cv::Rect roi; cv::Rect roi;
@ -260,7 +263,9 @@ void SyncWorkThread::run()
#ifdef SYNC_CAMERA #ifdef SYNC_CAMERA
emit event_ok(local_camera_number); emit event_ok(local_camera_number);
#endif #endif
// local_g_result_queue->put(true); #ifndef IS_CAM_NG_OK_DATA_MERGED
local_g_result_queue[local_camera_number]->put(true);
#endif
} }
} }
else else
@ -271,8 +276,11 @@ void SyncWorkThread::run()
#ifdef SYNC_CAMERA #ifdef SYNC_CAMERA
emit event_ng(local_camera_number); emit event_ng(local_camera_number);
#endif #endif
//local_g_result_queue->put(false); #ifndef IS_CAM_NG_OK_DATA_MERGED
local_g_result_queue[local_camera_number]->put(false);
#else
IsNGForAll = TRUE; IsNGForAll = TRUE;
#endif
} }
if ((local_SysConf.save == 2) || (local_SysConf.save == 1)) if ((local_SysConf.save == 2) || (local_SysConf.save == 1))
@ -375,16 +383,18 @@ void SyncWorkThread::run()
#endif #endif
j++; j++;
} }
#ifdef IS_CAM_NG_OK_DATA_MERGED
if (IsNGForAll) if (IsNGForAll)
{ {
local_g_result_queue->put(false); local_g_result_queue[MergeToCamId]->put(false);
} }
else else
{ {
local_g_result_queue->put(true); local_g_result_queue[MergeToCamId]->put(true);
} }
#endif
// emit display_check_total(local_camera_number, ++(frame_total[local_camera_number])); // emit display_check_total(local_camera_number, ++(frame_total[local_camera_number]));
} }
} }

@ -30,15 +30,16 @@ public:
} }
~SyncWorkThread(); ~SyncWorkThread();
void init(SyncQueue<std::vector<std::pair<int, cv::Mat>>>* image_ptr, ASyncQueue<bool>* result_ptr); void init(SyncQueue<std::vector<std::pair<int, cv::Mat>>>* image_ptr, ASyncQueue<bool>* result_ptr[], int MergeToCamId);
void start_work(); void start_work();
void stop(); void stop();
protected: protected:
void run(); void run();
int MergeToCamId;
public: public:
int local_camera_number; int local_camera_number;
SyncQueue<std::vector<std::pair<int, cv::Mat>>>* local_g_image_sync_queue; SyncQueue<std::vector<std::pair<int, cv::Mat>>>* local_g_image_sync_queue;
ASyncQueue<bool>* local_g_result_queue; ASyncQueue<bool>** local_g_result_queue;
bool b_quit; bool b_quit;
long frame_total[NumberOfSupportedCameras]; long frame_total[NumberOfSupportedCameras];
SysConf local_SysConf; SysConf local_SysConf;

Loading…
Cancel
Save