20396d5c
Hu Chunming
添加车头车尾算法
|
1
2
3
4
5
6
7
8
9
10
11
|
#include "PicAnalysis.h"
#include "./utils/logger.hpp"
PicAnalysis::PicAnalysis(/* args */)
{
aclInit(nullptr);
}
PicAnalysis::~PicAnalysis()
{
|
ba6761f1
Hu Chunming
补充日志
|
12
|
LOG_INFO("~PicAnalysis()");
|
4a273a4a
Hu Chunming
添加hcp和hp
|
13
|
release();
|
20396d5c
Hu Chunming
添加车头车尾算法
|
14
15
16
|
aclFinalize();
}
|
e8beee4d
Hu Chunming
实现jni接口
|
17
18
|
int PicAnalysis::init(VillageParam param) {
|
ba6761f1
Hu Chunming
补充日志
|
19
20
21
|
string log_path = param.log_path + "/main.log";
set_default_logger(LogLevel(param.log_level), "PicAnalysis", log_path.c_str(), param.log_mem, param.log_days);
|
e3062370
Hu Chunming
优化日志
|
22
23
24
25
26
27
|
// 输入参数
LOG_INFO("dev_id: {}", param.dev_id);
LOG_INFO("sdk_path: {}", param.sdk_path);
LOG_INFO("log_level: {}", param.log_level);
LOG_INFO("log_days: {}", param.log_days);
|
ba6761f1
Hu Chunming
补充日志
|
28
|
LOG_INFO("log_path: {}", log_path);
|
e3062370
Hu Chunming
优化日志
|
29
|
|
d708ccb3
Hu Chunming
增加日志
|
30
31
32
|
LOG_INFO("编译时间:{} {}", __DATE__, __TIME__);
LOG_INFO("execute dir:{}", helpers::PathUtils::GetCmdDir());
|
e8beee4d
Hu Chunming
实现jni接口
|
33
|
int dev_id = param.dev_id;
|
20396d5c
Hu Chunming
添加车头车尾算法
|
34
|
|
4a273a4a
Hu Chunming
添加hcp和hp
|
35
36
|
int ret = SY_FAILED;
|
d708ccb3
Hu Chunming
增加日志
|
37
38
39
40
|
VehicleAnalysisParam vehicle_analysis_param;
vehicle_analysis_param.devId = dev_id;
vehicle_analysis_param.sdk_root = param.sdk_path;
vehicle_analysis_param.max_batch_size = 16;
|
d708ccb3
Hu Chunming
增加日志
|
41
|
ret = m_vehicle_analysis.init(vehicle_analysis_param);
|
9b88b335
Hu Chunming
恢复代码
|
42
43
44
45
|
if(0 != ret){
return -1;
}
|
10667f7c
Hu Chunming
违法载人判断的优化
|
46
47
48
49
50
51
52
53
|
head_tail_param ht_param;
ht_param.devId = dev_id;
ht_param.max_batch = 16;
ht_param.sdk_root = param.sdk_path;
ret = m_head_tail_algorithm.init(ht_param);
if(0 != ret){
return -1;
}
|
9b88b335
Hu Chunming
恢复代码
|
54
|
|
581a68a4
Hu Chunming
修正parse_road无返回值导...
|
55
|
ret = m_clothes_algorithm.init(dev_id, param.sdk_path);
|
9b88b335
Hu Chunming
恢复代码
|
56
57
58
59
|
if(0 != ret){
return -1;
}
|
581a68a4
Hu Chunming
修正parse_road无返回值导...
|
60
|
ret = m_human_algorithm.init(dev_id, param.sdk_path);
|
9b88b335
Hu Chunming
恢复代码
|
61
62
63
64
|
if(0 != ret){
return -1;
}
|
581a68a4
Hu Chunming
修正parse_road无返回值导...
|
65
|
ret = m_human_car_algorithm.init(dev_id, param.sdk_path);
|
9b88b335
Hu Chunming
恢复代码
|
66
67
68
69
|
if(0 != ret){
return -1;
}
|
581a68a4
Hu Chunming
修正parse_road无返回值导...
|
70
|
ret = m_motor_rainshed_algorithm.init(dev_id, param.sdk_path);
|
9b88b335
Hu Chunming
恢复代码
|
71
72
73
74
|
if(0 != ret){
return -1;
}
|
581a68a4
Hu Chunming
修正parse_road无返回值导...
|
75
|
ret = m_motor_phone_algorithm.init(dev_id, param.sdk_path);
|
9b88b335
Hu Chunming
恢复代码
|
76
77
78
|
if(0 != ret){
return -1;
}
|
2ae58093
Hu Chunming
添加road_seg算法
|
79
|
|
581a68a4
Hu Chunming
修正parse_road无返回值导...
|
80
|
ret = m_road_seg_algorithm.init(dev_id, param.sdk_path);
|
4a273a4a
Hu Chunming
添加hcp和hp
|
81
82
83
84
|
if(0 != ret){
return -1;
}
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
85
86
87
88
89
|
ret = m_crop_util.init(dev_id);
if(0 != ret){
return -1;
}
|
4a273a4a
Hu Chunming
添加hcp和hp
|
90
91
|
ACL_CALL(aclrtCreateContext(&m_ctx, 0), ACL_SUCCESS, SY_FAILED);
ACL_CALL(aclrtSetCurrentContext(m_ctx), ACL_SUCCESS, SY_FAILED);
|
20396d5c
Hu Chunming
添加车头车尾算法
|
92
93
94
95
96
97
98
|
ACL_CALL(aclrtCreateStream(&stream), ACL_SUCCESS, SY_FAILED);
m_dvpp = new DvppProcess();
m_dvpp->InitResource(stream);
return 0;
}
|
427201b2
Hu Chunming
完善结果返回
|
99
100
101
|
vector<AnalysisResult> PicAnalysis::analysis_file(vector<string> vec_file_path){
vector<AnalysisResult> result;
|
20396d5c
Hu Chunming
添加车头车尾算法
|
102
|
|
e8beee4d
Hu Chunming
实现jni接口
|
103
104
105
|
int ret = aclrtSetCurrentContext(m_ctx);
if (SY_SUCCESS != ret) {
printf("aclrtSetCurrentContext failed!");
|
427201b2
Hu Chunming
完善结果返回
|
106
|
return result;
|
e8beee4d
Hu Chunming
实现jni接口
|
107
|
}
|
15756629
Hu Chunming
添加clothes算法
|
108
|
|
20396d5c
Hu Chunming
添加车头车尾算法
|
109
110
111
112
|
const int batch_size = vec_file_path.size();
vector<sy_img> vec_img;
|
20396d5c
Hu Chunming
添加车头车尾算法
|
113
114
115
116
117
118
119
120
121
|
// ImageData 内部是智能指针,分析未处理完成前不得释放
ImageData dvpp_data[batch_size];
for (size_t i = 0; i < vec_file_path.size(); i++)
{
string file_path = vec_file_path[i];
ImageData src;
ret = Utils::ReadImageFile(src, file_path); //将二进制图像读入内存,并读取宽高信息
if(ret != SY_SUCCESS){
LOG_ERROR("ReadImageFile failed!");
|
427201b2
Hu Chunming
完善结果返回
|
122
|
return result;
|
20396d5c
Hu Chunming
添加车头车尾算法
|
123
124
125
126
127
|
}
ret = m_dvpp->CvtJpegToYuv420sp(dvpp_data[i], src); //解码
if(ret != SY_SUCCESS){
LOG_ERROR("CvtJpegToYuv420sp failed!");
|
427201b2
Hu Chunming
完善结果返回
|
128
|
return result;
|
20396d5c
Hu Chunming
添加车头车尾算法
|
129
130
131
132
133
134
135
136
137
|
}
sy_img img;
img.w_ = dvpp_data[i].width;
img.h_ = dvpp_data[i].height;
img.data_ = dvpp_data[i].data.get();
vec_img.push_back(img);
}
|
e8beee4d
Hu Chunming
实现jni接口
|
138
139
140
141
|
return analysis_img(vec_img);
}
|
427201b2
Hu Chunming
完善结果返回
|
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
vector<AnalysisResult> PicAnalysis::va_result2AnalysisResult(va_result* result, int batchsize) {
vector<AnalysisResult> vec_result;
for (int b = 0; b < batchsize; b++)
{
vector<VehicleInfo> vec_info;
for(int c=0;c<result[b].count;c++)
{
vehicle_info result_info = result[b].info[c];
VehicleInfo info;
info.vehicle_detect_res = result_info.vehicle_detect_res ;
info.vehicle_win_detect_res = result_info.vehicle_win_detect_res ;
info.vehicle_body_detect_res = result_info.vehicle_body_detect_res ;
info.vehicle_color_res = result_info.vehicle_color_res ;
info.vehicle_recg_res = result_info.vehicle_recg_res ;
info.vehicle_plate_det_recg_res = result_info.vehicle_plate_det_recg_res;
info.vehicle_illegal_det_res = result_info.vehicle_illegal_det_res ;
info.vehicle_fea_res = result_info.vehicle_fea_res ;
info.mta_res = result_info.mta_res ;
info.manned_res = result_info.manned_res ;
info.type = result_info.type ;
info.vpt_type = result_info.vpt_type ;
|
427201b2
Hu Chunming
完善结果返回
|
166
|
|
10667f7c
Hu Chunming
违法载人判断的优化
|
167
|
|
427201b2
Hu Chunming
完善结果返回
|
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
auto pendant_result = result_info.vehicle_pendant_det_res;
for (size_t j = 0; j < pendant_result.count; j++)
{
auto pendant_det_info = pendant_result.vpd_res[j];
pendant_info one_pendant_info;
one_pendant_info.rect = pendant_det_info.rect;
one_pendant_info.index = pendant_det_info.index;
one_pendant_info.confidence = pendant_det_info.confidence;
one_pendant_info.driver_copilot_info = pendant_det_info.driver_copilot_info;
info.vehicle_pendant_det_res.push_back(one_pendant_info);
}
vec_info.push_back(info);
}
AnalysisResult one_result;
one_result.info = vec_info;
vec_result.push_back(one_result);
}
return vec_result;
}
vector<AnalysisResult> PicAnalysis::analysis_img(vector<sy_img> vec_img){
|
ba6761f1
Hu Chunming
补充日志
|
194
195
|
LOG_INFO("vec_img size:{}", vec_img.size());
|
d708ccb3
Hu Chunming
增加日志
|
196
197
|
std::lock_guard<std::mutex> l(m_single_mtx);
|
427201b2
Hu Chunming
完善结果返回
|
198
|
vector<AnalysisResult> vec_result;
|
e8beee4d
Hu Chunming
实现jni接口
|
199
200
201
202
203
|
const int batch_size = vec_img.size();
int ret = aclrtSetCurrentContext(m_ctx);
if (SY_SUCCESS != ret) {
|
ba6761f1
Hu Chunming
补充日志
|
204
|
LOG_INFO("aclrtSetCurrentContext failed!");
|
427201b2
Hu Chunming
完善结果返回
|
205
|
return vec_result;
|
e8beee4d
Hu Chunming
实现jni接口
|
206
207
|
}
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
208
|
va_result* result = m_vehicle_analysis.detect(vec_img);
|
427201b2
Hu Chunming
完善结果返回
|
209
|
if (result) {
|
427201b2
Hu Chunming
完善结果返回
|
210
211
212
213
|
vec_result = va_result2AnalysisResult(result, batch_size);
m_vehicle_analysis.release_result(result, vec_img.size());
}
|
ba6761f1
Hu Chunming
补充日志
|
214
215
|
LOG_INFO("vec_result size:{}", vec_result.size());
|
81e8a405
Hu Chunming
初步完成SDK
|
216
|
bool bConsistent = false;
|
06e0182f
Hu Chunming
修复src图片alignWidth...
|
217
218
|
std::vector<RoadInfo> vec_road = m_road_seg_algorithm.detect(vec_img);
if (vec_road.size() == batch_size && vec_result.size() == batch_size) {
|
81e8a405
Hu Chunming
初步完成SDK
|
219
|
bConsistent = true;
|
06e0182f
Hu Chunming
修复src图片alignWidth...
|
220
221
222
223
224
|
for (size_t i = 0; i < batch_size; i++) {
vec_result[i].vec_line = vec_road[i].vec_line;
vec_result[i].vec_road = vec_road[i].vec_road;
}
}
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
225
|
|
427201b2
Hu Chunming
完善结果返回
|
226
|
for (int b = 0; b < vec_result.size(); b++)
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
227
|
{
|
427201b2
Hu Chunming
完善结果返回
|
228
229
|
vector<VehicleInfo>& vec_info = vec_result[b].info;
|
81e8a405
Hu Chunming
初步完成SDK
|
230
231
232
233
234
|
RoadInfo road_info;
if (bConsistent) {
road_info = vec_road[b];
}
|
e8beee4d
Hu Chunming
实现jni接口
|
235
|
sy_img img = vec_img[b];
|
06e0182f
Hu Chunming
修复src图片alignWidth...
|
236
|
|
e8beee4d
Hu Chunming
实现jni接口
|
237
238
239
|
ImageData src;
src.width = img.w_;
src.height = img.h_;
|
06e0182f
Hu Chunming
修复src图片alignWidth...
|
240
241
242
|
src.alignWidth = ALIGN_UP16(img.w_);
src.alignHeight = ALIGN_UP2(img.h_);
src.size = YUV420SP_SIZE(src.alignWidth, src.alignHeight);
|
e8beee4d
Hu Chunming
实现jni接口
|
243
|
src.data_naked = img.data_;
|
427201b2
Hu Chunming
完善结果返回
|
244
|
for(int c=0;c<vec_info.size();c++)
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
245
|
{
|
427201b2
Hu Chunming
完善结果返回
|
246
247
|
VehicleInfo& result_info = vec_info[c];
int shot_type=result_info.type;
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
248
|
|
81e8a405
Hu Chunming
初步完成SDK
|
249
250
|
sy_rect vehicle_rect = result_info.vehicle_body_detect_res.rect;
|
5e69f8fc
Hu Chunming
补充字段;
|
251
252
|
if (road_info.vec_direct.size() > 0 && (1 == shot_type || 0 == shot_type)) {
result_info.reverse_driving = m_road_seg_algorithm.check_reverse_driving(road_info.vec_direct, vehicle_rect, src.width, src.height, shot_type);
|
81e8a405
Hu Chunming
初步完成SDK
|
253
254
|
}
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
255
|
// 行人
|
10667f7c
Hu Chunming
违法载人判断的优化
|
256
|
if (0 == result_info.vpt_type)
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
257
|
{
|
81e8a405
Hu Chunming
初步完成SDK
|
258
|
ImageData* human_data = m_crop_util.crop(src, vehicle_rect.left_, vehicle_rect.top_, vehicle_rect.left_ + vehicle_rect.width_, vehicle_rect.top_ + vehicle_rect.height_);
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
259
260
261
262
263
264
265
266
267
|
sy_img img;
img.w_ = human_data->alignWidth;
img.h_ = human_data->alignHeight;
img.data_ = human_data->data_naked;
vector<sy_img> vec_human_img;
vec_human_img.push_back(img);
|
427201b2
Hu Chunming
完善结果返回
|
268
269
270
271
|
vector<BodyColorInfo> vec_body_color = m_human_algorithm.detect(vec_human_img);
result_info.human_upper_color = vec_body_color[0].upper_body_color;
result_info.human_lower_color = vec_body_color[0].lower_body_color;
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
272
273
274
|
delete human_data;
human_data = nullptr;
|
10667f7c
Hu Chunming
违法载人判断的优化
|
275
276
277
278
279
|
} else if(result_info.vpt_type == 1 || result_info.vpt_type == 2 || result_info.vpt_type == 3){
if(result_info.manned_res.hs_count >= 3){
// 摩托车、三轮车载人
result_info.motor_manned = 1;
}
|
667e7a90
Hu Chunming
雨棚和打电话初步代码
|
280
|
} else {
|
10667f7c
Hu Chunming
违法载人判断的优化
|
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
|
ImageData* vehicle_data = m_crop_util.crop(src, vehicle_rect.left_, vehicle_rect.top_, vehicle_rect.left_ + vehicle_rect.width_, vehicle_rect.top_ + vehicle_rect.height_);
sy_img img;
img.w_ = vehicle_data->alignWidth;
img.h_ = vehicle_data->alignHeight;
img.data_ = vehicle_data->data_naked;
vector<sy_img> vec_vehicle_img;
vec_vehicle_img.push_back(img);
vector<HeadTailResult> head_tail_result;
ret = m_head_tail_algorithm.detect(vec_vehicle_img, head_tail_result);
if (0 != ret) {
LOG_ERROR("m_head_tail_algorithm failed!");
head_tail_result.clear();
} else {
auto one_ht_result = head_tail_result[0];
if(result_info.vpt_type == 6 || result_info.vpt_type == 7){
if (one_ht_result.cls == 0 && result_info.manned_res.hs_count > 0)
{ // 车尾,判断是否 货车尾部货厢载人
result_info.truck_manned = 1;
}
}
|
667e7a90
Hu Chunming
雨棚和打电话初步代码
|
305
|
}
|
98293f20
Hu Chunming
修复显存泄露导致崩溃问题
|
306
307
|
delete vehicle_data;
vehicle_data = nullptr;
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
308
309
310
|
}
// 司乘
|
427201b2
Hu Chunming
完善结果返回
|
311
312
|
auto& pendant_res = result_info.vehicle_pendant_det_res;
int vpd_num = pendant_res.size();
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
313
|
vector<sy_img> vec_human_img;
|
427201b2
Hu Chunming
完善结果返回
|
314
|
vector<ImageData*> vec_data;
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
315
316
|
for(int p=0; p<vpd_num; p++)
{
|
427201b2
Hu Chunming
完善结果返回
|
317
318
319
|
int index = pendant_res[p].index;
if(index == 0){ //driver
sy_rect human_rect = pendant_res[p].rect;
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
320
321
322
323
324
325
326
327
|
ImageData* human_data = m_crop_util.crop(src, human_rect.left_, human_rect.top_, human_rect.left_ + human_rect.width_, human_rect.top_ + human_rect.height_);
sy_img img;
img.w_ = human_data->alignWidth;
img.h_ = human_data->alignHeight;
img.data_ = human_data->data_naked;
vec_human_img.push_back(img);
|
427201b2
Hu Chunming
完善结果返回
|
328
329
|
vec_data.push_back(human_data);
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
330
331
332
|
}
}
|
427201b2
Hu Chunming
完善结果返回
|
333
|
vector<int> vec_color = m_clothes_algorithm.detect(vec_human_img);
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
334
|
|
427201b2
Hu Chunming
完善结果返回
|
335
|
for(int p=0; p<vec_color.size(); p++)
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
336
|
{
|
427201b2
Hu Chunming
完善结果返回
|
337
338
339
340
341
342
343
|
int index = pendant_res[p].index;
if(index == 0) { // 更新司乘衣着颜色
pendant_res[p].iColor = vec_color[p];
ImageData* human_data = vec_data[p];
delete human_data;
human_data = nullptr;
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
344
345
346
347
348
349
|
}
}
// 摩托车
if(shot_type==2)//摩托车
{
|
81e8a405
Hu Chunming
初步完成SDK
|
350
|
ImageData* motor_data = m_crop_util.crop(src, vehicle_rect.left_, vehicle_rect.top_, vehicle_rect.left_ + vehicle_rect.width_, vehicle_rect.top_ + vehicle_rect.height_);
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
351
352
353
354
355
356
357
358
359
|
sy_img img;
img.w_ = motor_data->alignWidth;
img.h_ = motor_data->alignHeight;
img.data_ = motor_data->data_naked;
vector<sy_img> vec_motor_img;
vec_motor_img.push_back(img);
|
6f9dffde
Hu Chunming
返回prob
|
360
361
362
363
|
vector<MotorRainshedResult> vec_rainshed_result = m_motor_rainshed_algorithm.detect(vec_motor_img);
if (vec_rainshed_result.size() > 0) {
result_info.rainshed = vec_rainshed_result[0].rainshed;
result_info.rainshed_prob = vec_rainshed_result[0].prob;
|
667e7a90
Hu Chunming
雨棚和打电话初步代码
|
364
|
}
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
365
|
|
6f9dffde
Hu Chunming
返回prob
|
366
367
368
369
|
vector<MotorPhoneResult> vec_phone_result = m_motor_phone_algorithm.detect(vec_motor_img);
if (vec_phone_result.size() > 0) {
result_info.phoning = vec_phone_result[0].phoning;
result_info.phoning_prob = vec_phone_result[0].prob;
|
81e8a405
Hu Chunming
初步完成SDK
|
370
371
|
}
|
f258e1c8
Hu Chunming
添加非机动车驾乘信息
|
372
|
int iColor = -1;
|
81e8a405
Hu Chunming
初步完成SDK
|
373
|
std::vector<HumanCarResult> vec_hcp_result = m_human_car_algorithm.detect(vec_motor_img);
|
5e69f8fc
Hu Chunming
补充字段;
|
374
|
if (vec_hcp_result.size() > 0 && road_info.vec_direct.size() > 0) {
|
a1a053f2
Hu Chunming
修正人骑车逻辑错误
|
375
|
int head_or_tail = vec_hcp_result[0].orient;
|
5e69f8fc
Hu Chunming
补充字段;
|
376
377
|
if (head_or_tail == 0 || head_or_tail == 1) {
result_info.reverse_driving = m_road_seg_algorithm.check_reverse_driving(road_info.vec_direct, vehicle_rect, src.width, src.height, head_or_tail);
|
81e8a405
Hu Chunming
初步完成SDK
|
378
|
}
|
f258e1c8
Hu Chunming
添加非机动车驾乘信息
|
379
380
381
382
383
384
385
386
387
388
389
390
391
392
|
iColor = vec_hcp_result[0].up_color;
}
int hs_num = result_info.manned_res.hs_count;
for (size_t i = 0; i < hs_num; i++)
{
pendant_info one_pendant;
one_pendant.confidence = result_info.manned_res.hs_rect[i].score;
one_pendant.rect = result_info.manned_res.hs_rect[i].rect;
one_pendant.index = 0;
one_pendant.iColor = iColor;
result_info.vehicle_pendant_det_res.push_back(one_pendant);
|
667e7a90
Hu Chunming
雨棚和打电话初步代码
|
393
394
|
}
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
395
396
397
|
delete motor_data;
motor_data = nullptr;
}
|
81e8a405
Hu Chunming
初步完成SDK
|
398
399
|
//压黄实线
|
581a68a4
Hu Chunming
修正parse_road无返回值导...
|
400
|
result_info.cross_line = m_road_seg_algorithm.check_cross_line(road_info.vec_line, vehicle_rect, src.width, src.height);
|
81e8a405
Hu Chunming
初步完成SDK
|
401
|
// 压导流线
|
581a68a4
Hu Chunming
修正parse_road无返回值导...
|
402
|
result_info.cross_diversion_line = m_road_seg_algorithm.check_cross_region(road_info.vec_road, vehicle_rect, src.width, src.height, 3); //3是导流线区域
|
b3012672
Hu Chunming
天啊及hp,road_seg子sd...
|
403
404
|
}
}
|
20396d5c
Hu Chunming
添加车头车尾算法
|
405
|
|
06e0182f
Hu Chunming
修复src图片alignWidth...
|
406
|
LOG_INFO("analysis finished!");
|
4a273a4a
Hu Chunming
添加hcp和hp
|
407
|
|
427201b2
Hu Chunming
完善结果返回
|
408
|
return vec_result;
|
20396d5c
Hu Chunming
添加车头车尾算法
|
409
410
411
|
}
int PicAnalysis::release() {
|
4a273a4a
Hu Chunming
添加hcp和hp
|
412
413
|
ACL_CALL(aclrtSetCurrentContext(m_ctx), ACL_SUCCESS, SY_FAILED);
|
20396d5c
Hu Chunming
添加车头车尾算法
|
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
|
delete m_dvpp;
m_dvpp = nullptr;
if (stream != nullptr) {
int ret = aclrtDestroyStream(stream);
if (ret != ACL_SUCCESS) {
LOG_ERROR("destroy stream failed");
}
stream = nullptr;
}
aclrtDestroyContext(m_ctx);
return 0;
|
20396d5c
Hu Chunming
添加车头车尾算法
|
429
|
}
|