#ifndef RTSP_IMAGE_REDIS_ELEMENT_H #define RTSP_IMAGE_REDIS_ELEMENT_H #include #include #include "../StructureApp/HiredisTool.h" #include #include //保存到Redis的图片名和图片数据 struct NameImagePair_s_t { NameImagePair_s_t(const std::string& name,const cv::Mat& image) { this->m_imgName = name; this->m_image=image; } //图片名称 std::string m_imgName; //图片数据 cv::Mat m_image; }; //将图片保存到Redis的部分隔离出来,作为一个单独的线程 //保存图片到Redis的单独线程类,每个类的实例对应一个CamId class RtspImageRedisElement: public TimerElement { public: RtspImageRedisElement(const std::string& camId); //保存图片到内部的队列中 bool SaveImage(const std::string& imageName,const cv::Mat& img); private: virtual void timerFunc() override; virtual void threadInitial() override; virtual void threadClosing() override; private: // Redis的工具类 HiredisTool m_redisTool; //用来暂存图片的队列,最大的大小为M_CAM_PIC_MAX_COUNT std::queue m_imageQueue; //对保存到Redis的图片进行计数 std::atomic m_picCount{0}; //摄像机ID std::string m_camId; //每台摄像机保存到Redis的图片数量的最大值 const int M_CAM_PIC_MAX_COUNT = 3; }; #endif // VIDEOCAPTUREELEMENT_H