From 59408e43480b48b6acd6e76641ff1a97811e7ab5 Mon Sep 17 00:00:00 2001 From: pansen <pansen626@sina.com> Date: 星期四, 10 一月 2019 18:19:49 +0800 Subject: [PATCH] 修改yoloServer 优化多线程? --- QiaoJiaSystem/YoloServer/YoloDetectServerI.h | 36 +++++++++++++++++++++++++++++------- 1 files changed, 29 insertions(+), 7 deletions(-) diff --git a/QiaoJiaSystem/YoloServer/YoloDetectServerI.h b/QiaoJiaSystem/YoloServer/YoloDetectServerI.h index ad18554..ed5203a 100644 --- a/QiaoJiaSystem/YoloServer/YoloDetectServerI.h +++ b/QiaoJiaSystem/YoloServer/YoloDetectServerI.h @@ -1,20 +1,40 @@ #ifndef YOLODETECTSERVERI_H #define YOLODETECTSERVERI_H #define GPU + #include "YoloServer.h" #include <thread> #include <darknet.h> #include <opencv2/opencv.hpp> #include <basic/util/resource/ResourcesManager.h> -class YoloDetectServerI : public YoloDetect::YoloDetectServer -{ + +#include "DnDetect.h" +#include <atomic> + +struct DnDetectRes { +public: + DnDetectRes() : i(3) { + } + + DnDetect::DnDetect *dnDetect; +// 搴忓彿鍙婄嚎绋媔d + std::unordered_map<int, std::thread::id> map_pid; +// 鎺ュ彈鐨勭嚎绋嬩釜鏁� + int i; +}; + +class YoloDetectServerI : public YoloDetect::YoloDetectServer { public: YoloDetectServerI(); + virtual ~YoloDetectServerI(); // FaceDetectServer interface public: - virtual ::YoloDetect::ObjInfos YoloDetect(::Ice::Int, ::Ice::Int, const ::std::string&, const ::Ice::Current& = ::Ice::emptyCurrent)override; + virtual ::YoloDetect::ObjInfos + YoloDetect(::Ice::Int, ::Ice::Int, const ::std::string &, const ::Ice::Current & = ::Ice::emptyCurrent) override; + virtual YoloDetect::stringData getCocoData(const Ice::Current &) override; + private: network *m_net; float m_thresh; @@ -25,13 +45,15 @@ bool m_bInitThd; std::thread m_thdInit; - // ResourcesManager<int> resourcesManager; + std::map<int, DnDetectRes> map_dnDetRes; + + // ResourcesManager<int> resourcesManager; private: - static int init(void* arg); - image matToImg(cv::Mat& RefImg); - cv::Mat bufferToMat(const int w,const int h,const int channels,const void* buffer); + static int init(void *arg); + + cv::Mat bufferToMat(const int w, const int h, const int channels, const void *buffer); }; -- Gitblit v1.8.0