- 创建基本项目结构和目录 - 添加CMake构建系统 - 实现基础的配置解析功能 - 添加YOLO推理框架支持 - 集成RTSP和视频流处理功能 - 添加性能监控和日志系统
48 lines
1.4 KiB
C++
48 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <queue>
|
|
#include <mutex>
|
|
#include <condition_variable>
|
|
#include <opencv2/core/mat.hpp>
|
|
#include <chrono>
|
|
|
|
namespace pipeline {
|
|
|
|
class FrameQueue {
|
|
public:
|
|
explicit FrameQueue(size_t max_size = 30);
|
|
~FrameQueue();
|
|
|
|
// 禁用拷贝
|
|
FrameQueue(const FrameQueue&) = delete;
|
|
FrameQueue& operator=(const FrameQueue&) = delete;
|
|
|
|
// 推入一帧(带超时)
|
|
bool push(const cv::Mat& frame, std::chrono::milliseconds timeout = std::chrono::milliseconds(1000));
|
|
|
|
// 弹出一帧(带超时)
|
|
bool pop(cv::Mat& frame, std::chrono::milliseconds timeout = std::chrono::milliseconds(1000));
|
|
|
|
// 清空队列
|
|
void clear();
|
|
|
|
// 关闭队列
|
|
void close();
|
|
|
|
// 获取队列状态
|
|
bool empty() const;
|
|
bool full() const;
|
|
size_t size() const;
|
|
size_t capacity() const { return max_size_; }
|
|
bool is_closed() const { return is_closed_; }
|
|
|
|
private:
|
|
std::queue<cv::Mat> queue_; // 帧队列
|
|
mutable std::mutex mutex_; // 互斥锁
|
|
std::condition_variable not_full_; // 队列未满条件变量
|
|
std::condition_variable not_empty_; // 队列非空条件变量
|
|
const size_t max_size_; // 最大队列大小
|
|
bool is_closed_{false}; // 队列是否关闭
|
|
};
|
|
|
|
} // namespace pipeline
|