#include "RtspImageRedis.h" #include #include #include #include #include RtspImageRedisElement::RtspImageRedisElement(const std::string& camId): TimerElement(10),m_camId(camId){ } //定时将队列中的图片放入Redis void RtspImageRedisElement::timerFunc() { if(!m_imageQueue.empty()) { auto imageCount = m_redisTool.getSize(m_camId); //保证Redis中的图片不要过多 if (imageCount > M_CAM_PIC_MAX_COUNT) { ERR("Too Much Pics In Cam " << m_camId << "Redis"); return; } auto item = m_imageQueue.front(); m_redisTool.setKeyImage(item.m_imgName,item.m_image); m_redisTool.listLpush(m_camId, item.m_imgName); m_imageQueue.pop(); } } void RtspImageRedisElement::threadInitial() { } void RtspImageRedisElement::threadClosing() { } //保存图片到队列中, //注意: 因为图片比较大,所以队列中不适合保存有太多的图片,否则可能占用内存过多,导致电脑不响应 bool RtspImageRedisElement::SaveImage(const std::string& imageName,const cv::Mat& img) { //保证队列中的图片不要过多 if(m_imageQueue.size() < M_CAM_PIC_MAX_COUNT) { m_imageQueue.push(NameImagePair_s_t(imageName,img)); } return true; }