6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include "VehiclePlate.h"
#include "vehicle_plate_dr.h"
VehiclePlate::VehiclePlate(/* args */)
{
}
VehiclePlate::~VehiclePlate()
{
release();
}
int VehiclePlate::init(int dev_id, string model_dir){
string model_path = model_dir + "/models/vp2/yolo_plate_det310p.om" ;
string cls_model_path = model_dir + "/models/vp2/plate3cls_310p.om" ;
string reg_model_path = model_dir + "/models/vp2/plate_reg230316_310p.om" ;
LOG_INFO("hp 版本:{} 模型路径:{}", vpdr_get_version(), model_path);
vpd_param dparam;
char modelNames[100];
strcpy(modelNames, model_path.c_str());
dparam.modelNames = modelNames;
dparam.thresld = 0.2;
dparam.devId = dev_id;
vpr_param rparam;
char cls_modelNames[100];
strcpy(cls_modelNames, cls_model_path.c_str());
rparam.cls_modelNames = cls_modelNames;
char reg_modelNames[100];
strcpy(reg_modelNames, reg_model_path.c_str());
rparam.reg_modelNames = reg_modelNames;
m_devId = dev_id;
ACL_CALL(aclrtSetDevice(m_devId), ACL_SUCCESS, -1);
ACL_CALL(aclrtCreateContext(&m_algorthim_ctx, m_devId), ACL_SUCCESS, -1);
int ret = vpdr_init(&m_handle, dparam, rparam);
if(ret != 0){
LOG_ERROR("vc_init error.");
return -1;
}
return 0;
}
|
881ac79d
Hu Chunming
代码调通,结果正常输出
|
50
51
52
53
|
vector<VehiclePlateResult> VehiclePlate::process(vector<DeviceMemory*> vec_gpuMem)
{ // 每个 DeviceMemory 只包含一辆车
int ret = aclrtSetCurrentContext(m_algorthim_ctx);
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
vector<VehiclePlateResult> vec_res;
int batchsize = vec_gpuMem.size();
vector<sy_img> batch_img;
for (int i = 0; i < vec_gpuMem.size(); i++) {
DeviceMemory* mem = vec_gpuMem[i];
sy_img img;
img.w_ = mem->getWidth();
img.h_ = mem->getHeight();
img.c_ = mem->getChannel();
img.data_ = mem->getMem();
batch_img.push_back(img);
}
vector<vplates_result> vec_result;
vec_result.resize(batchsize);
|
881ac79d
Hu Chunming
代码调通,结果正常输出
|
73
|
ret = vpdr_batch(m_handle, batch_img.data(), batchsize, vec_result.data());
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
74
75
76
77
78
79
80
81
82
83
84
85
86
|
if (SY_SUCCESS != ret) {
printf("vpr detection process failed!");
return vec_res;
}
for(int batchIdx = 0; batchIdx < batchsize; batchIdx ++){
auto& plate_info = vec_result[batchIdx].vehicle_plate_infos[0];
VehiclePlateResult res;
res.left_ = plate_info.rect.left_;
res.top_ = plate_info.rect.top_;
res.width_ = plate_info.rect.width_;
res.height_ = plate_info.rect.height_;
|
8dcef6cb
Hu Chunming
修复detect_score值不对的问题
|
87
|
res.detect_score = plate_info.detect_score;
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
memcpy(res.recg, plate_info.recg, sizeof(PlateNum) * 8);
res.num_score = plate_info.num_score;
res.type = plate_info.type;
res.state = plate_info.state;
res.state_score = plate_info.state_score;
vec_res.push_back(res);
}
return vec_res;
}
void VehiclePlate::release(){
if (m_handle){
vpdr_release(&m_handle);
m_handle = NULL;
}
if(m_algorthim_ctx){
aclrtDestroyContext(m_algorthim_ctx);
|
881ac79d
Hu Chunming
代码调通,结果正常输出
|
107
|
m_algorthim_ctx = nullptr;
|
6fdcb6a5
Hu Chunming
初次提交,代码大体完成编写,完善中
|
108
109
|
}
}
|