From 6ec2cc5ab6bb2ef338461604636f5bd7dbb6ebbc Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期三, 11 一月 2017 18:27:15 +0800 Subject: [PATCH] face daemon develop finish --- RtspFace/main_face_daemon.cpp | 10 ++-- RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp | 50 ++++++++++++------------ RtspFace/PL_SensetimeFaceDetect.h | 4 +- RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h | 2 + RtspFace/PL_SensetimeFaceDetect.cpp | 11 +++-- 5 files changed, 40 insertions(+), 37 deletions(-) diff --git a/RtspFace/PL_SensetimeFaceDetect.cpp b/RtspFace/PL_SensetimeFaceDetect.cpp index 12f68ff..3707b9f 100644 --- a/RtspFace/PL_SensetimeFaceDetect.cpp +++ b/RtspFace/PL_SensetimeFaceDetect.cpp @@ -94,10 +94,10 @@ return false; } - faceDB* _faceDB = (faceDB*)frame->_faceDB; - if (_faceDB == nullptr) + faceAPI* _faceAPI = (faceAPI*)frame->_faceAPI; + if (_faceAPI == nullptr) { - LOG_ERROR << "faceDB is null"; + LOG_ERROR << "faceAPI is null"; return false; } @@ -109,8 +109,9 @@ } cv::Mat yuvMat(cv::Size(frame->width,frame->height), CV_8UC3, frame->buffer); - cv_feature_t* feature = _faceDB->extract_feature(yuvMat); - in->lastResult.st_id = _faceDB->search_db(feature); + //cv_feature_t* feature = _faceAPI->extract_feature(yuvMat); + //in->lastResult.st_id = _faceAPI->search_db(feature); + in->lastResult.st_id = _faceAPI->do_reasch(yuvMat); //#todo release feature in->lastResult.school_id = frame->school_id; diff --git a/RtspFace/PL_SensetimeFaceDetect.h b/RtspFace/PL_SensetimeFaceDetect.h index 7a3fd0c..8454ad7 100644 --- a/RtspFace/PL_SensetimeFaceDetect.h +++ b/RtspFace/PL_SensetimeFaceDetect.h @@ -8,9 +8,9 @@ struct SensetimeFaceDetectDbFrame : public MB_Frame { int school_id; - void* _faceDB; + void* _faceAPI; - SensetimeFaceDetectDbFrame() : MB_Frame(), school_id(-1), _faceDB(nullptr) + SensetimeFaceDetectDbFrame() : MB_Frame(), school_id(-1), _faceAPI(nullptr) { } }; diff --git a/RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp b/RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp index 9a39a6f..147d4e1 100644 --- a/RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp +++ b/RtspFace/SensetimeFaceAPIWrapper/src/FaceDBPool.cpp @@ -1,5 +1,5 @@ #include "FaceDBPool.h" -#include "logger.h" +#include "../../logger.h" #include "faceAPI.h" #include <pthread.h> @@ -26,7 +26,7 @@ struct MutexLocker { pthread_mutex_t* mut; - MutexLocker(pthread_mutex_t* _mut) : mut(_mut) + MutexLocker(void* _mut) : mut((pthread_mutex_t*)_mut) { PLP_MUTEX_LOCK(mut,); } @@ -44,12 +44,12 @@ ThreadSafeFaceDB() : dbid(-1), db_mutex(), api(nullptr) { - pthread_mutex_init(db_mutex, NULL); + pthread_mutex_init(&db_mutex, NULL); } ~ThreadSafeFaceDB() { - pthread_mutex_destroy(db_mutex); + pthread_mutex_destroy(&db_mutex); } }; @@ -69,12 +69,12 @@ facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map; for (facedb_map_t::iterator iter = _face_db_map->begin(); iter != _face_db_map->end(); ++iter) { - iter->second.api->db_save(); - delete iter->second.api; + iter->second->api->db_save(); + delete iter->second->api; delete iter->second; } - _face_db_map.clear(); + _face_db_map->clear(); pthread_mutex_destroy((pthread_mutex_t*)pool_mutex); delete (pthread_mutex_t*)pool_mutex; @@ -90,14 +90,14 @@ facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map; - if (_face_db_map.find(dbid) != _face_db_map.end()) + if (_face_db_map->find(dbid) != _face_db_map->end()) return; ThreadSafeFaceDB* tsfdb = new ThreadSafeFaceDB; - tsfdb.dbid = dbid; - tsfdb.api = db; + tsfdb->dbid = dbid; + tsfdb->api = db; - _face_db_map.insert(std::make_pair(dbid, tsfdb)); + _face_db_map->insert(std::make_pair(dbid, tsfdb)); } void FaceDBPool::unmanage(int dbid) @@ -105,15 +105,15 @@ MutexLocker _ml(pool_mutex); facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map; - facedb_map_t::iterator iter = _face_db_map.find(dbid); - if (iter == _face_db_map.end()) + facedb_map_t::iterator iter = _face_db_map->find(dbid); + if (iter == _face_db_map->end()) return; - iter->second.api->db_save(); - delete iter->second.api; + iter->second->api->db_save(); + delete iter->second->api; delete iter->second; - _face_db_map.erase(iter); + _face_db_map->erase(iter); } faceAPI* FaceDBPool::get_free(int dbid) @@ -124,11 +124,11 @@ MutexLocker _ml(pool_mutex); facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map; - if (_face_db_map.empty()) + if (_face_db_map->empty()) return nullptr; - facedb_map_t::iterator iter = _face_db_map.find(dbid); - if (iter == _face_db_map.end()) + facedb_map_t::iterator iter = _face_db_map->find(dbid); + if (iter == _face_db_map->end()) return nullptr; tsfdb = iter->second; @@ -136,7 +136,7 @@ if (tsfdb != nullptr) { - PLP_MUTEX_LOCK(tsfdb->db_mutex, nullptr); + PLP_MUTEX_LOCK(&(tsfdb->db_mutex), nullptr); return tsfdb->api; } } @@ -149,18 +149,18 @@ MutexLocker _ml(pool_mutex); facedb_map_t* _face_db_map = (facedb_map_t*)face_db_map; - if (_face_db_map.empty()) + if (_face_db_map->empty()) return; - facedb_map_t::iterator iter = _face_db_map.find(dbid); - if (iter == _face_db_map.end()) - return nullptr; + facedb_map_t::iterator iter = _face_db_map->find(dbid); + if (iter == _face_db_map->end()) + return; tsfdb = iter->second; } if (tsfdb != nullptr) { - PLP_MUTEX_UNLOCK(tsfdb->db_mutex,); + PLP_MUTEX_UNLOCK(&(tsfdb->db_mutex),); } } diff --git a/RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h b/RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h index c41b0d8..75894c1 100644 --- a/RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h +++ b/RtspFace/SensetimeFaceAPIWrapper/src/faceAPI.h @@ -22,6 +22,8 @@ int do_reasch(cv::Mat image); //注册 后台另一进程调用 int do_register(cv::Mat image); + + bool db_save(); private: diff --git a/RtspFace/main_face_daemon.cpp b/RtspFace/main_face_daemon.cpp index ad8df4d..b614719 100644 --- a/RtspFace/main_face_daemon.cpp +++ b/RtspFace/main_face_daemon.cpp @@ -57,7 +57,7 @@ PipeLinePool g_PipeLinePool; -FaceDBPool g_FaceDBPool;//#todo config +FaceDBPool g_faceAPIPool;//#todo config evclient_proc_t evclient_proc; @@ -102,15 +102,15 @@ FDP_Image* fdpImage = (FDP_Image*)(client.recvBuff + sizeof(EVPHeader)); - faceAPI* _faceDB = g_FaceDBPool.get_free(fdpImage->school_id); - if (_faceDB == nullptr) + faceAPI* _faceAPI = g_faceAPIPool.get_free(fdpImage->school_id); + if (_faceAPI == nullptr) { LOG_WARN << "can't get face db"; ev_send_status_packet(client, EVPStatus::EVPS_PARAMETER_ERROR); return false; } - PoolElemLocker<FaceDBPool*, int> _lock_faceDB(&g_FaceDBPool, fdpImage->school_id); + PoolElemLocker<FaceDBPool*, int> _lock_faceAPI(&g_faceAPIPool, fdpImage->school_id); PipeLine* pipeLine = g_PipeLinePool.get_free(); if (pipeLine == nullptr) @@ -132,7 +132,7 @@ dbFrame.width = fdpImage->width; dbFrame.height = fdpImage->height; dbFrame.school_id = fdpImage->school_id; - dbFrame._faceDB = _faceDB; + dbFrame._faceAPI = _faceAPI; PipeMaterial pm; pm.type = PipeMaterial::PMT_FRAME; -- Gitblit v1.8.0