From 7591c4baaf5d24b1c67d20fd0879bdb8907ad2e7 Mon Sep 17 00:00:00 2001
From: suntianyu <xuepengqiang@aiotlink.com>
Date: 星期三, 28 七月 2021 10:43:10 +0800
Subject: [PATCH] Merge branch '3090' of ssh://192.168.5.5:29418/Algorithm/baseDetector into 3090

---
 src/config.h               |    2 
 demo.cpp                   |    5 
 config/log.properties      |    6 
 src/utils/draw_util.h      |    3 
 src/core/ari_manager.h     |    1 
 CMakeLists.txt             |    2 
 /dev/null                  |   38 -------
 src/core/ari_manager.cpp   |   13 +-
 src/h_interface.cpp        |    6 +
 src/utils/time_util.cpp    |  134 ++++++++++++++++++++++++++
 src/utils/time_util.h      |   49 +++++++++
 src/detecter_tools/model.h |    2 
 src/utils/draw_util.cpp    |   28 +++++
 13 files changed, 232 insertions(+), 57 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 302977c..4cabd75 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.5)
-project(yoloDetector VERSION 1.0)
+project(baseDetector VERSION 1.0)
 enable_language(CUDA)
 
 set(CMAKE_CXX_COMPILIER "/usr/bin/g++")
diff --git a/config/log4cplus.properties b/config/log.properties
similarity index 91%
rename from config/log4cplus.properties
rename to config/log.properties
index efc154f..ec6914e 100644
--- a/config/log4cplus.properties
+++ b/config/log.properties
@@ -16,7 +16,7 @@
 log4cplus.appender.DEBUG_MSGS.MaxBackupIndex=1
 
 #璁剧疆杈撳嚭鏃ュ織璺緞
-log4cplus.appender.DEBUG_MSGS.File=../logs/trt_debug.log
+log4cplus.appender.DEBUG_MSGS.File=/opt/vasystem/valog/01_Scheanve/01_baseDetector_debug.log
 log4cplus.appender.DEBUG_MSGS.layout=log4cplus::PatternLayout
 
 #璁剧疆鏃ュ織鎵撳嵃鏍煎紡
@@ -41,7 +41,7 @@
 log4cplus.appender.ERROR_MSGS.MaxBackupIndex=1
 
 #璁剧疆杈撳嚭鏃ュ織璺緞
-log4cplus.appender.ERROR_MSGS.File=../logs/trt_error.log
+log4cplus.appender.ERROR_MSGS.File=/opt/vasystem/valog/01_Scheanve/01_baseDetector_error.log
 log4cplus.appender.ERROR_MSGS.layout=log4cplus::PatternLayout
 
 #璁剧疆鏃ュ織鎵撳嵃鏍煎紡
@@ -66,7 +66,7 @@
 log4cplus.appender.WARN_MSGS.MaxBackupIndex=1
 
 #璁剧疆杈撳嚭鏃ュ織璺緞
-log4cplus.appender.WARN_MSGS.File=../logs/trt_warn.log
+log4cplus.appender.WARN_MSGS.File=/opt/vasystem/valog/01_Scheanve/01_baseDetector_warn.log
 log4cplus.appender.WARN_MSGS.layout=log4cplus::PatternLayout
 
 #璁剧疆鏃ュ織鎵撳嵃鏍煎紡
diff --git a/demo.cpp b/demo.cpp
index 79ac900..d64c627 100644
--- a/demo.cpp
+++ b/demo.cpp
@@ -45,9 +45,10 @@
             sr = get_result(handle, img, 0);
             TResult * t_result = (TResult*) sr;
             cout << "t_result->count==" << t_result->count  << endl;
-            for (int i=0; i<t_result->count; i++){
+            for (int i=0; i<t_result->count; i++)
+            {
                 cout << "confidence:" << t_result->targets[i].confidence << endl;
-                draw_SDK_result(frame, t_result->targets[i]);
+                // draw_SDK_result(frame, t_result->targets[i]);
             }
         }else{
             cout << "------------over--" << endl;
diff --git a/src/config.h b/src/config.h
index f495e58..78526b6 100644
--- a/src/config.h
+++ b/src/config.h
@@ -4,7 +4,7 @@
 
 #ifndef INC_01_CPP_SORT_CONFIG_H
 #define INC_01_CPP_SORT_CONFIG_H
-#include "utils/timer_utils.hpp"
+#include "utils/time_util.h"
 
 #include <opencv2/opencv.hpp>
 #include <algorithm>
diff --git a/src/core/ari_manager.cpp b/src/core/ari_manager.cpp
index f6db85e..857f820 100644
--- a/src/core/ari_manager.cpp
+++ b/src/core/ari_manager.cpp
@@ -57,18 +57,15 @@
 
     // cv::imshow("img",image0);
     // cv::waitKey(0);
-    Timer timer;
-    timer.reset();
     this->detector->detect(batch_img, batch_res);
-    timer.out("detect");
 
     t_result.targets = (Target*)malloc(sizeof(Target)*batch_res[0].size());
-    // 灏嗙畻娉曠粨鏋滆浆鍖栦负鏍囧噯鐨勬牸寮忥紙浠ョ洰鏍囨娴嬩负渚嬶級
+    // 灏嗙畻娉曠粨鏋滆浆鍖栦负鏍囧噯鐨勬牸寮忥紙浠ョ洰鏍囨娴嬩负渚嬶級""
     int w_count = 0;
     for (const auto &result_box:batch_res[0])
     {
-        // if(result_box.id == 0)
-        // {
+        if(result_box.id == 1)
+        {
             Target target;
             init_target(&target);
 
@@ -94,9 +91,11 @@
 
             t_result.targets[w_count] = target;
             w_count ++;
-        // }
+        }
     }
+    std::cout << "eve batch_res size:: "<< batch_res[0].size() << " w_count: " << w_count <<std::endl;
     t_result.count = w_count;
+    draw_SDK_result(cam_id, frame, t_result); //澶氱嚎绋嬫棤娉曡皟鐢ㄧ粯鍥�
 }
 
 void AriManager::init_target(Target *t){
diff --git a/src/core/ari_manager.h b/src/core/ari_manager.h
index e908f4f..9bec3f9 100644
--- a/src/core/ari_manager.h
+++ b/src/core/ari_manager.h
@@ -7,6 +7,7 @@
 #include "std_target.h"
 #include "config.h"
 #include "detector.h"
+#include "../utils/draw_util.h"
 
 using namespace std;
 using namespace cv;
diff --git a/src/detecter_tools/model.h b/src/detecter_tools/model.h
index 33e5c8c..eb3adff 100644
--- a/src/detecter_tools/model.h
+++ b/src/detecter_tools/model.h
@@ -13,7 +13,7 @@
 #include <stdint.h>
 #include <string>
 #include <vector>
-#include "../utils/timer_utils.hpp"
+#include "../utils/time_util.h"
 #include "../config.h"
 #include "opencv2/opencv.hpp"
 
diff --git a/src/h_interface.cpp b/src/h_interface.cpp
index ce84aa2..2bd00be 100644
--- a/src/h_interface.cpp
+++ b/src/h_interface.cpp
@@ -13,9 +13,10 @@
 // 鍒涘缓
 API void* create(const char *conf, int *max_chan)
 {
-    CLog::Initialize("../config/log4cplus.properties");
+    CLog::Initialize("/opt/vasystem/bin/models/baseDetector/log.properties");
     ReadJsonFromFile(conf);
     AriManager *handle = new AriManager();
+    Timer::getInstance()->reset();
     return handle;
 }
 
@@ -25,7 +26,10 @@
     AriManager *h = (AriManager*)handle;
     TResult *t_result = (TResult*)malloc(sizeof(TResult));
     init_TResult(t_result);
+
+    Timer::getInstance()->out("eveTime before yolo");
     h->single_SDK(chan, img, *t_result);
+    Timer::getInstance()->out("eveTime runing yolo");
     return t_result;
 }
 
diff --git a/src/utils/draw_util.cpp b/src/utils/draw_util.cpp
index 5fe9c73..5e2c5a7 100644
--- a/src/utils/draw_util.cpp
+++ b/src/utils/draw_util.cpp
@@ -31,12 +31,12 @@
     //         DEBUG( ":::::::::create folder! error!::::::");
     //     }
     // }
-    DEBUG("=2==create_path:")
+    DEBUG("=2==create_path:");
     char DirName[256];
     strcpy(DirName,path);
     int i,len = strlen(DirName);
     if(DirName[len-1]!='/')
-    strcat(DirName,"/");
+        strcat(DirName,"/");
     len = strlen(DirName);
     for(i=1;i<len;i++)
     {
@@ -50,7 +50,7 @@
             //        perror("mkdir error");
             //    }
             // }
-            DEBUG("=1==create_path:")
+            DEBUG("=1==create_path:");
             int a = access(DirName, F_OK);
             if(a ==-1)
             {
@@ -79,3 +79,25 @@
     cv::imshow(to_string(1), mat_img);
     cv::waitKey(0);
 }
+
+cv::VideoWriter writer("./01_baseDetector.avi", cv::VideoWriter::fourcc('M','J','P','G'),24, cv::Size(800,500), true);
+// cv::VideoWriter writer("/opt/vasystem/valog/01_Scheanve/01_baseDetector.avi", cv::VideoWriter::fourcc('M','J','P','G'),24, cv::Size(800,500), true);
+
+void draw_SDK_result(const int cam_id, cv::Mat mat_img, TResult& t_result)
+{
+    cv::Rect tmp_rect;
+
+    for (int i = 0; i < t_result.count; ++i)
+    {
+        auto &result = t_result.targets[i];
+        tmp_rect = cv::Rect(result.rect.left,result.rect.top,result.rect.right-result.rect.left,result.rect.bottom-result.rect.top);
+        cv::rectangle(mat_img, tmp_rect , cv::Scalar(50, 200, 50), 2);
+//        cv::putText(mat_img, std::to_string(result.id), Point((result.rect.left+result.rect.right)/2,result.rect.top+150), CV_FONT_HERSHEY_SIMPLEX, 0.8, Scalar(255,255,0), 2);
+    }
+//    delete tmp_rect;
+    cv::resize(mat_img, mat_img, cv::Size(800,500));
+//  cv::imwrite("1111.jpg", mat_img);
+    // cv::imshow("RESULT", mat_img);
+    writer<< mat_img;
+    // cv::waitKey(0);
+}
diff --git a/src/utils/draw_util.h b/src/utils/draw_util.h
index fa12331..8a916b1 100644
--- a/src/utils/draw_util.h
+++ b/src/utils/draw_util.h
@@ -12,5 +12,8 @@
 void create_foldert(const char *path);
 
 void draw_SDK_result(cv::Mat mat_img, Target& target);
+void draw_SDK_result(const int cam_id, cv::Mat mat_img,  TResult& t_result);
+
+
 
 #endif //DRAW_UTIL_H
diff --git a/src/utils/time_util.cpp b/src/utils/time_util.cpp
new file mode 100644
index 0000000..6adc215
--- /dev/null
+++ b/src/utils/time_util.cpp
@@ -0,0 +1,134 @@
+//
+// Created by Scheaven on 2020/5/14.
+//
+
+#include "time_util.h"
+
+#include <stdio.h>
+#include <memory.h>
+#include <iostream>
+#include <ctime>
+#include <string>
+#include "stdlib.h"
+#include <sys/time.h>
+#include <time.h>
+#include <unistd.h>
+
+using namespace std;
+
+int get_run_time(struct timeval *result, struct timeval *begin, struct timeval * end)
+{
+    if(begin->tv_sec > end->tv_sec)  return -1;
+    if((begin->tv_sec == end->tv_sec) && (begin->tv_usec > end->tv_usec))  return -2;
+    result->tv_sec = end->tv_sec - begin->tv_sec;
+    result->tv_usec = end->tv_usec - begin->tv_usec;
+
+    if(result->tv_usec<0)
+    {
+        result->tv_sec--;
+        result->tv_usec += 1000000;
+    }
+    return 0;
+}
+
+time_t strTime2unix(char* timeStamp)
+{
+    struct tm tm;
+    memset(&tm, 0, sizeof(tm));
+
+    sscanf(timeStamp, "%d-%d-%d %d:%d:%d",
+           &tm.tm_year, &tm.tm_mon, &tm.tm_mday,
+           &tm.tm_hour, &tm.tm_min, &tm.tm_sec);
+
+    tm.tm_year -= 1900;
+    tm.tm_mon--;
+
+    return mktime(&tm);
+}
+
+long char_2_unix(char* str1)
+{
+    char str[100];
+//    std::cout<< "==char_2_unix=%s锛�" << str1<< std::endl;
+
+    strcpy(str, str1);
+    const char *mySplit = ".";
+    char *p;
+    char *p1;
+    char *p2;
+
+    p1 = strtok(str, mySplit);
+    p2 = strtok(NULL, mySplit);
+//    std::cout<< "--p1=锛�" << p1 << " : " << p2 << std::endl;
+    time_t t = strTime2unix(p1);
+
+//    std::cout<< "char_2_unix=t=%s锛�" << t << std::endl;
+    return t*1000+atoi(p2);
+}
+
+
+char* fa_getSysTime()
+{
+    struct timeval tv;
+    gettimeofday(&tv,NULL);
+    struct tm* pTime;
+    pTime = localtime(&tv.tv_sec);
+
+    static char sTemp[30] = "0";
+    snprintf(sTemp, sizeof(sTemp), "%04d-%02d-%02d %02d:%02d:%02d:%03d", pTime->tm_year+1900, \
+            pTime->tm_mon+1, pTime->tm_mday, pTime->tm_hour, pTime->tm_min, pTime->tm_sec, \
+            tv.tv_usec/1000);
+    char* TP = sTemp;
+    return TP;
+}
+
+string random_int(size_t length)
+{
+    long seed = (unsigned)time(NULL) + (unsigned)clock();
+    srand(seed);
+    auto randchar= []() ->char
+    {
+        const char  charset[] = "0123456789";
+        const size_t max_index = (sizeof(charset) - 1);
+        return charset[rand()%max_index];
+    };
+    std::string str(length,0);
+    std::generate_n(str.begin(),length,randchar);
+    //SLOG::getInstance()->addLog(0, str + "------seed and id--init-----id:" + to_string(seed));
+    return str;
+}
+
+
+Timer* Timer::instance = NULL;
+Timer* Timer::getInstance()
+{
+    if (instance==NULL)
+    {
+        instance = new Timer();
+    }
+    return instance;
+}
+
+Timer::Timer():beg_(clock_::now()){}
+void Timer::reset()
+{
+    beg_ = clock_::now();
+}
+
+double Timer::elapsed() const
+{
+    return std::chrono::duration_cast<second_>(clock_::now() - beg_).count();
+}
+
+void Timer::out(std::string message)
+{
+    double t = elapsed();
+    // std::cout << message << " elasped time:" << t << "ms" << std::endl;
+    DEBUG((boost::format("%e: %f ms")%message %t).str());
+    reset();
+}
+
+double Timer::get_duration() const
+{
+    return elapsed();
+}
diff --git a/src/utils/time_util.h b/src/utils/time_util.h
new file mode 100644
index 0000000..79b9c68
--- /dev/null
+++ b/src/utils/time_util.h
@@ -0,0 +1,49 @@
+//
+// Created by Scheaven on 2020/5/14.
+//
+
+#ifndef DEMO_TIME_UTIL_H
+#define DEMO_TIME_UTIL_H
+
+#include <sys/time.h>
+#include <cstdio>
+#include <time.h>
+#include <stdlib.h>
+#include <string>
+#include <algorithm>
+#include <sstream>
+
+int get_run_time(struct timeval *result, struct timeval *begin, struct timeval *end);
+
+time_t strTime2unix(char* timeStamp);
+
+long char_2_unix(char* str1);
+
+char* fa_getSysTime();
+
+std::string random_int(size_t length);
+
+#include <chrono>
+#include "log_util.h"
+#include <boost/format.hpp>
+
+class Timer
+{
+    public:
+        static Timer* instance;
+        static Timer* getInstance();
+
+        Timer();
+    public:
+        void reset();
+        double elapsed() const;
+        void out(std::string message="");
+        // DEBUG((boost::format("nhao%d")%1).str());
+        double get_duration() const;
+    private:
+        using clock_ = std::chrono::high_resolution_clock;
+        using second_=std::chrono::duration<double,std::milli>;
+        std::chrono::time_point<clock_>beg_;
+};
+
+#endif //DEMO_TIME_UTIL_H
diff --git a/src/utils/timer_utils.hpp b/src/utils/timer_utils.hpp
deleted file mode 100644
index dafccbb..0000000
--- a/src/utils/timer_utils.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#pragma once
-
-#include <istream>
-#include <string>
-#include <chrono>
-#include "log_util.h"
-#include <boost/format.hpp>
-
-class Timer
-{
-    public:
-        Timer():beg_(clock_::now()){}
-        void reset()
-        {
-            beg_ = clock_::now();
-        }
-        double elapsed() const
-        {
-            return std::chrono::duration_cast<second_>(clock_::now() - beg_).count();
-        }
-        void out(std::string message="")
-        {
-            double t = elapsed();
-            // std::cout << message << " elasped time:" << t << "ms" << std::endl;
-            DEBUG((boost::format("%e lasped time:%f ms")%message %t).str());
-            reset();
-        }
-        // DEBUG((boost::format("nhao%d")%1).str());
-
-        double get_duration() const
-        {
-            return elapsed();
-        }
-    private:
-        using clock_ = std::chrono::high_resolution_clock;
-        using second_=std::chrono::duration<double,std::milli>;
-        std::chrono::time_point<clock_>beg_;
-};

--
Gitblit v1.8.0