QiaoJiaSystem/LocalDBTool/SqliteFaceEncap.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
QiaoJiaSystem/YoloServer/main.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
QiaoJiaSystem/LocalDBTool/SqliteFaceEncap.h
@@ -12,15 +12,35 @@ /** * #todo sqlite -> Qt.sqlite */ /*** * sqlite3 操作工具类 */ class SqliteFaceEncap : public sqliteEncapsulation { public: explicit SqliteFaceEncap(std::string t_string); /*** * 创建布控底库 * 不通用,因为内部有一个insert函数调用 * @param t_tableName * @param fieldValues * @return */ bool createTable(std::string t_tableName, FieldValues &fieldValues); /*** * 通用的单表更新 * @param t_tableName * @param fieldValues * @return */ bool updateTable(std::string t_tableName, FieldValues &fieldValues); /*** * 删除表 * @param t_tableName * @return */ bool deleteTable(std::string t_tableName); /*** @@ -30,26 +50,80 @@ */ std::vector<std::string> getTableNameList(std::string type); /*** * 获取所有已创建的表信息 * @return */ TableInfos getTableInfos(); public: /*** * 添加人脸 * @param t_tableName 表名 * @param faceData 人脸特征结构体 * @param fieldValues 字段集合 * @return */ std::string addFace(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues); /*** * 更新人脸 * @param t_tableName 表名 * @param faceData 人脸特征结构体 * @param fieldValues 字段集合 * @return */ bool updateFace(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues); /*** * 向人脸特征表插入记录 * @param t_tableName * @param faceData * @return */ std::string addFaceData(std::string t_tableName, AddFaceData &faceData); //#todo /*** * 添加人脸业务信息 * @param t_tableName * @param fieldValues * @return */ bool addFaceInfo(std::string t_tableName, FieldValues &fieldValues); /*** * * @param t_tableName * @param faceData * @return */ bool updateFaceData(std::string t_tableName, AddFaceData &faceData); /*** * * @param t_tableName * @param fieldValues * @return */ bool updateFaceInfo(std::string t_tableName, FieldValues &fieldValues); /*** * * @param t_tableName * @param uuid * @return */ bool deleteFace(std::string t_tableName, std::string uuid); private: /*** * * @param t_tableName * @param uuid * @return */ bool deleteFaceData(std::string t_tableName, std::string uuid); public: QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp
@@ -1,6 +1,10 @@ // // Created by pans on 4/28/18. // /*** * 说明,本文件主要是sql语句拼接及获取已定义的sql语句 * 目前仅支持单表sql语句拼接 */ #ifndef TESTSQLITE_SQLITETOOLKIT_HPP #define TESTSQLITE_SQLITETOOLKIT_HPP @@ -24,6 +28,9 @@ */ typedef std::vector<unsigned char> FaceFeature; /*** * 添加人脸的数据结构 */ struct AddFaceData { std::string uuid; FaceFeature feature; @@ -31,6 +38,9 @@ std::string feature_base64; }; /*** * 人脸信息的数据结构 */ struct FaceInfo { std::string uuid; std::string personName; @@ -44,6 +54,9 @@ typedef std::vector<FaceInfo> FaceInfos; typedef std::map<std::string, FaceInfo> FaceInfosCache; /*** * 表信息数据结构 */ struct TableInfo { std::string uuid; std::string tableName; @@ -64,6 +77,9 @@ //typedef std::map<std::string, FaceFeatures> FeatureDBCache; /*** * 带有URL和其他属性的人脸特征数据结构 */ struct FaceFeatureWithUrl { std::string uuid; std::string faceurl; @@ -81,14 +97,19 @@ #define SQLERR(message) fprintf(stderr, "%s->%d-> SQLite error: %s\n",__FILE__,__LINE__, message); //#todo 数据库wenjian名称 //#todo 数据库文件名称 //是否需要从配置文件读取? static std::string file_dbName = "TestFaceDB.db"; //#todo 数据库名称 static std::string g_dbName = "main"; //#todo 管理表的表名 static std::string g_tableName = "sys_o_tables"; // /*** * 获取人脸特征查询的sqlite语句 * @param tableName 表名,不带 _fea * @return */ std::string getFacesFromTableSql(std::string tableName) { // #todo get monLevel 联合查询 std::string sql = @@ -97,6 +118,11 @@ return sql; } /*** * 根据表类型获取数据表列表 * @param type * @return */ std::string getTableListSqlWithType(std::string type) { std::string sql = "select tableName,del_flag from '" + g_tableName + "' where del_flag = 0"; if (type.size() > 0) { @@ -105,12 +131,20 @@ return sql; } /*** * 查询任意表的所有字段 * @param tableName * @return */ std::string getTableInfosSql(std::string tableName) { std::string sql = "select * from '" + tableName + "';";// + " where del_flag = 0"; return sql; } /*** * 获取当前已创建的表 * @return */ std::string getTableInfosSql() { //uuid,tableName,tableDesc,tableType,bwType,startTime,endTime std::string sql = @@ -268,7 +302,12 @@ return sql; } /*** * 获取更新人脸业务信息表的sql语句 * @param tableName * @param fieldValues * @return */ std::string getUpdateFaceTableSql(std::string tableName, FieldValues &fieldValues) { if (tableName.size() == 0) { //#todo errInfo @@ -299,6 +338,11 @@ //#TODO 人脸表需要删除两个 /*** * 获取删除人脸表的sql语句 * @param tableName * @return */ std::string getDeleteFaceTableSql(std::string tableName) { if (tableName.size() == 0) { //#todo errInfo QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -10,11 +10,10 @@ RtspAnalysManager::RtspAnalysManager(LDBTool *_dbTool) : m_lDBTool(nullptr), m_maxCount(50), m_currentCount(0) { INFO("MYH DEBUG HERE"); m_lDBTool=new LDBTool; m_lDBTool = new LDBTool; init(); } static std::string rtspAddrBuild(std::string ip, const int port, std::string username, @@ -50,27 +49,25 @@ if (lst.size() > 0) { int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep"); int CamCount = appPref.getIntData("CamStep"); INFO("StartCamNO: "<<startCamNO<<" CamStep: "<<CamCount); INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount); auto itor = lst.begin(); if(startCamNO >= lst.size()) { if (startCamNO >= lst.size()) { ERR("startCamNO > lst.size()"); return; } for(int i=0; i < startCamNO; i++){ for (int i = 0; i < startCamNO; i++) { std::string t_camIdex = itor->str_cam_dev_id.toStdString(); std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(), itor->str_password.toStdString(), itor->str_brand.toStdString()); INFO("JumpCam: "<<t_camIdex<<" URL: "<<rtsp_url); INFO("JumpCam: " << t_camIdex << " URL: " << rtsp_url); itor++; } for (int i = 0; i < CamCount; i++) { if (itor == lst.end()) { if (itor == lst.end()) { ERR("itor == lst.end()"); return; } @@ -102,7 +99,7 @@ RtspAnalysManager::~RtspAnalysManager() { INFO("Program Exit"); for (auto controller: m_controllers) { INFO("Delete Controller: "<<controller.first); INFO("Delete Controller: " << controller.first); delete controller.second; } m_controllers.clear(); @@ -116,7 +113,7 @@ * @param rtsp 上面的摄像机对应的视频路径 * @return -1 添加失败,0 添加成功 */ int RtspAnalysManager::addCamera(const std::string &index, const std::string& rtsp) { int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) { auto lst = m_lDBTool->searchCamDevTableAll(); Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); @@ -126,13 +123,13 @@ ERR("addCamera faild, camera's num is full!") return -1; } INFO("RTSP: "<<rtsp<<" INDEX:"<<index); INFO("RTSP: " << rtsp << " INDEX:" << index); m_imgRedisControllers[index] = new RtspImageRedisElement(index); m_imgRedisControllers[index]->start(); m_controllers[index] = new RtspCaptureElement(rtsp,index, 25,3000,0,this); m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this); m_controllers[index]->start(); m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration,lst_dev.n_cut_max_duration); m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, lst_dev.n_cut_max_duration); m_currentCount++; return 0; @@ -212,37 +209,31 @@ //录取视频的RPC的接口函数 ::std::string RtspAnalysManager::recordVideo(const ::std::string& name, const ::Ice::Current&) { INFO("Record Video For: "<<name); ImageName_s_t nameSt=ImageName_s_t::fromString(name); if(nameSt.Valid()) { ::std::string RtspAnalysManager::recordVideo(const ::std::string &name, const ::Ice::Current &) { INFO("Record Video For: " << name); ImageName_s_t nameSt = ImageName_s_t::fromString(name); if (nameSt.Valid()) { auto pCaptureElem = m_controllers.find(nameSt.m_camId); if(pCaptureElem!= m_controllers.end()) { if (pCaptureElem != m_controllers.end()) { pCaptureElem->second->SaveVideo(name); } else{ ERR("Can not Find CamId "<<nameSt.m_camId); } else { ERR("Can not Find CamId " << nameSt.m_camId); } } else{ ERR("Record Video Failed:Name Not Valid Name: "<<name); } else { ERR("Record Video Failed:Name Not Valid Name: " << name); } return name; } //保存视频到RtspImageRedis的队列,由RtspCaptureElement调用 bool RtspAnalysManager::SaveImageToRedis(const std::string& camId,const std::string& imageName,const cv::Mat& img) { bool RtspAnalysManager::SaveImageToRedis(const std::string &camId, const std::string &imageName, const cv::Mat &img) { INFO("MYH DEBUG HERE"); auto item = m_imgRedisControllers.find(camId); if(item!=m_imgRedisControllers.end()) { INFO("Save Succeed Cam: "<<camId<<" ImageKey: "<<imageName); item->second->SaveImage(imageName,img); if (item != m_imgRedisControllers.end()) { INFO("Save Succeed Cam: " << camId << " ImageKey: " << imageName); item->second->SaveImage(imageName, img); } else { ERR("Save Failed Cam: "<<camId<<" ImageKey: "<<imageName); ERR("Save Failed Cam: " << camId << " ImageKey: " << imageName); } INFO("MYH DEBUG HERE"); return true; QiaoJiaSystem/YoloServer/main.cpp
@@ -30,12 +30,12 @@ // return -1; // } int gpuindex = 1; int gpuindex = 0; int poolNum = 1; int portNum = 10003; appPref.setIntData("gpu.index", gpuindex); appPref.setFloatData("thresh.detect", 0.7); appPref.setFloatData("thresh.detect", 0.85); appPref.setIntData("poolNum", poolNum); IceRpcServer<YoloDetectServerI> server("yoloServer", portNum, "tcp");