// globals.h #ifndef GLOBALS_H #define GLOBALS_H #include #include #include #include #include #include // 图片显示0 extern QMutex gDispPicMutex0; extern MIL_ID gDispCurrentPicId0; // 图片显示1 extern QMutex gDispPicMutex1; extern MIL_ID gDispCurrentPicId1; extern QMutex gMaskMutex0; extern MIL_ID gMask0; extern QMutex gMaskMutex1; extern MIL_ID gMask1; extern QSemaphore detection_ready; QString getSaveDirectory(); QString getConfigDirectory(); // 定义一个结构体来存储图像数据及其来源相机ID struct ImageData { int camera_id; cv::Mat image; }; template class ThreadSafeQueue{ public: // 添加元素到队列 void enqueue(const T& item) { std::unique_lock lock(mutex_); queue_.push(item); cond_var_.notify_one(); } // 从队列中移除并获取元素 bool dequeue(T& item) { std::unique_lock lock(mutex_); while (queue_.empty() && !stop_) { cond_var_.wait(lock); } if (queue_.empty()) return false; item = std::move(queue_.front()); queue_.pop(); return true; } // 停止队列,唤醒所有等待的线程 void stop() { std::unique_lock lock(mutex_); stop_ = true; cond_var_.notify_all(); } private: std::queue queue_; std::mutex mutex_; std::condition_variable cond_var_; bool stop_ = false; }; // 定义全局存储队列 extern ThreadSafeQueue g_storageQueue; #endif // GLOBALS_H