Commit 01b357d4ed86c08082bf9c56330cd25bd3cec10b

Authored by Hu Chunming
1 parent 98293f20

添加获取显存占用的代码

src/demo/main.cpp
@@ -2,12 +2,49 @@ @@ -2,12 +2,49 @@
2 #include <vector> 2 #include <vector>
3 #include <string> 3 #include <string>
4 #include <iostream> 4 #include <iostream>
  5 +#include <dirent.h>
  6 +#include<fstream>
  7 +
5 #include "../utils/logger.hpp" 8 #include "../utils/logger.hpp"
  9 +#include "../utils/DeviceUtil.hpp"
6 10
7 using namespace std; 11 using namespace std;
8 12
9 void show_result(std::vector<AnalysisResult> r, vector<string> vec_path); 13 void show_result(std::vector<AnalysisResult> r, vector<string> vec_path);
10 14
  15 +
  16 +void GetFileNames(string path,vector<string>& filenames)
  17 +{
  18 + DIR *pDir;
  19 + struct dirent* ptr;
  20 + if(!(pDir = opendir(path.c_str()))){
  21 + cout<<"Folder doesn't Exist!"<<endl;
  22 + return;
  23 + }
  24 + while((ptr = readdir(pDir))!=0) {
  25 + if (strcmp(ptr->d_name, ".") != 0 && strcmp(ptr->d_name, "..") != 0){
  26 + filenames.push_back(path + "/" + ptr->d_name);
  27 + }
  28 + }
  29 + closedir(pDir);
  30 +}
  31 +
  32 +vector<string> GetFilesFromFile(string file_path){
  33 +
  34 + vector<string> vec_files;
  35 +
  36 + fstream infile(file_path);
  37 +
  38 + string text;
  39 + while (getline(infile, text)){
  40 + // text.erase(text.size() - 1, 1);
  41 + vec_files.push_back(text);
  42 + }
  43 + infile.close();
  44 +
  45 + return vec_files;
  46 +}
  47 +
11 int main() { 48 int main() {
12 49
13 void *vaHandle = NULL; 50 void *vaHandle = NULL;
@@ -32,14 +69,43 @@ int main() { @@ -32,14 +69,43 @@ int main() {
32 // vec_path.push_back(path); 69 // vec_path.push_back(path);
33 // } 70 // }
34 71
  72 +
  73 +
35 vector<string> vec_path; 74 vector<string> vec_path;
  75 + GetFileNames("/home/share/data/villiage_test/test", vec_path);
  76 +
  77 + vec_path = GetFilesFromFile("./files1.log");
  78 +
  79 + // {
  80 + // string path = "./img/test_road2.jpg";
  81 + // vec_path.push_back(path);
  82 + // }
  83 +
  84 + int last_recoder = 0;
  85 + int index = 0;
  86 +
  87 + while (true)
36 { 88 {
37 - string path = "./img/test_motor4.jpg";  
38 - vec_path.push_back(path); 89 + for (size_t i = 0; i < vec_path.size(); i++)
  90 + {
  91 + vector<string> vec_file_name;
  92 + vec_file_name.push_back(vec_path[i]);
  93 + vec_file_name.push_back(vec_path[i]);
  94 +
  95 + std::vector<AnalysisResult> result = village_pic_analysis_file(vaHandle, vec_file_name);
  96 + show_result(result, vec_path);
  97 +
  98 + int cur_recoder = GetDeviceMem(0);
  99 + if (cur_recoder > last_recoder)
  100 + {
  101 + LOG_INFO("memesize cur: {} last:{} file:{}", cur_recoder, last_recoder, vec_path[i]);
  102 + }
  103 + last_recoder = cur_recoder;
  104 + }
  105 + LOG_INFO("第{}次完成:{}", index, vec_path.size());
  106 + index++;
39 } 107 }
40 108
41 - std::vector<AnalysisResult> result = village_pic_analysis_file(vaHandle, vec_path);  
42 - show_result(result, vec_path);  
43 109
44 village_pic_release(&vaHandle); 110 village_pic_release(&vaHandle);
45 111
@@ -62,6 +128,8 @@ void show_result(std::vector&lt;AnalysisResult&gt; result, vector&lt;string&gt; vec_path){ @@ -62,6 +128,8 @@ void show_result(std::vector&lt;AnalysisResult&gt; result, vector&lt;string&gt; vec_path){
62 128
63 for (size_t i = 0; i < result.size(); i++) 129 for (size_t i = 0; i < result.size(); i++)
64 { 130 {
  131 + LOG_INFO("-------------------------------------------第{}张图---------------------------------------------", i);
  132 +
65 std::vector<VehicleInfo> info = result[i].info; 133 std::vector<VehicleInfo> info = result[i].info;
66 for (size_t j = 0; j < info.size(); j++) 134 for (size_t j = 0; j < info.size(); j++)
67 { 135 {
@@ -91,7 +159,7 @@ void show_result(std::vector&lt;AnalysisResult&gt; result, vector&lt;string&gt; vec_path){ @@ -91,7 +159,7 @@ void show_result(std::vector&lt;AnalysisResult&gt; result, vector&lt;string&gt; vec_path){
91 } 159 }
92 160
93 161
94 - LOG_INFO("-------------------------------------------{}---------------------------------------------", j); 162 + LOG_INFO("----------------{}---------------", j);
95 LOG_INFO("位置特征"); 163 LOG_INFO("位置特征");
96 LOG_INFO(" 车辆位置:{},{},{},{}", info[j].vehicle_body_detect_res.rect.left_ ,info[j].vehicle_body_detect_res.rect.top_, info[j].vehicle_body_detect_res.rect.width_, info[j].vehicle_body_detect_res.rect.height_); 164 LOG_INFO(" 车辆位置:{},{},{},{}", info[j].vehicle_body_detect_res.rect.left_ ,info[j].vehicle_body_detect_res.rect.top_, info[j].vehicle_body_detect_res.rect.width_, info[j].vehicle_body_detect_res.rect.height_);
97 LOG_INFO(" 拍摄方向:{}", shot_type[info[j].type]); 165 LOG_INFO(" 拍摄方向:{}", shot_type[info[j].type]);
@@ -150,13 +218,18 @@ void show_result(std::vector&lt;AnalysisResult&gt; result, vector&lt;string&gt; vec_path){ @@ -150,13 +218,18 @@ void show_result(std::vector&lt;AnalysisResult&gt; result, vector&lt;string&gt; vec_path){
150 LineInfo one_line = vec_line[i]; 218 LineInfo one_line = vec_line[i];
151 LOG_INFO(" 标线类型:{}", line_cls[one_line.line_type]); 219 LOG_INFO(" 标线类型:{}", line_cls[one_line.line_type]);
152 string str_line = ""; 220 string str_line = "";
153 - for (size_t j = 0; j < one_line.vec_pt.size(); j++) 221 + const cv::Scalar color(seg_colors[i][0], seg_colors[i][1], seg_colors[i][2]);
  222 + size_t j = 0;
  223 + for (; j < one_line.vec_pt.size() - 1; j++)
154 { 224 {
  225 + cv::line(image, one_line.vec_pt[j], one_line.vec_pt[j+1], color, 2, 8);
155 str_line += to_string(one_line.vec_pt[j].x)+","+to_string(one_line.vec_pt[j].y) + "_"; 226 str_line += to_string(one_line.vec_pt[j].x)+","+to_string(one_line.vec_pt[j].y) + "_";
156 } 227 }
  228 + str_line += to_string(one_line.vec_pt[j].x)+","+to_string(one_line.vec_pt[j].y) + "_";
157 LOG_INFO(" 标线点集:{}", str_line); 229 LOG_INFO(" 标线点集:{}", str_line);
158 } 230 }
159 231
  232 + std::vector<std::vector<cv::Point> > polys;
160 std::vector<SegInfo> vec_road = result[i].vec_road; 233 std::vector<SegInfo> vec_road = result[i].vec_road;
161 for (size_t i = 0; i < vec_road.size(); i++) 234 for (size_t i = 0; i < vec_road.size(); i++)
162 { 235 {
@@ -167,8 +240,19 @@ void show_result(std::vector&lt;AnalysisResult&gt; result, vector&lt;string&gt; vec_path){ @@ -167,8 +240,19 @@ void show_result(std::vector&lt;AnalysisResult&gt; result, vector&lt;string&gt; vec_path){
167 { 240 {
168 str_line += to_string(one_seg.vec_pt[j].x)+","+to_string(one_seg.vec_pt[j].y) + "_"; 241 str_line += to_string(one_seg.vec_pt[j].x)+","+to_string(one_seg.vec_pt[j].y) + "_";
169 } 242 }
  243 +
  244 + // polys.push_back(one_seg.vec_pt);
  245 +
  246 + const cv::Scalar color(seg_colors[i][0], seg_colors[i][1], seg_colors[i][2]);
  247 + cv::polylines(image, one_seg.vec_pt, true, color, 3);
  248 +
  249 + // cv::fillPoly(image, one_seg.vec_pt, color);
  250 +
170 LOG_INFO(" 车道点集:{}", str_line); 251 LOG_INFO(" 车道点集:{}", str_line);
171 } 252 }
  253 +
  254 + // const cv::Scalar color(0, 0, 255);
  255 + // cv::fillPoly(image, polys, color);
172 } 256 }
173 257
174 cv::imwrite("./show_result.jpg", image); 258 cv::imwrite("./show_result.jpg", image);
src/utils/DeviceUtil.hpp 0 → 100644
  1 +
  2 +#ifndef __DEVICE_UTIL__
  3 +#define __DEVICE_UTIL__
  4 +
  5 +#include "acl/acl.h"
  6 +#include "acl/ops/acl_dvpp.h"
  7 +
  8 +#include "logger.hpp"
  9 +
  10 +
  11 +int GetDeviceMem(int dev_id) {
  12 + aclrtSetDevice(dev_id);
  13 + size_t free = 0;
  14 + size_t total = 0;
  15 + aclError err = aclrtGetMemInfo(ACL_DDR_MEM, &free, &total);
  16 + aclrtResetDevice(dev_id);
  17 + if (err != 0){
  18 + LOG_ERROR("aclrtGetMemInfo error!");
  19 + return -1;
  20 + }
  21 + LOG_INFO("device {} memory usage/total:{}/{}", dev_id, total - free, total);
  22 +
  23 + return total - free;
  24 +}
  25 +
  26 +
  27 +#endif // __DEVICE_UTIL__
0 \ No newline at end of file 28 \ No newline at end of file