main.cpp
int process_lpr(vector<cv::Mat>, shared_ptr<TRT::Infer>, vector<pr::plate> &);
vector<pr::plate> plates;
process_lpr(images, engine, plates);
a.cpp
int process_lpr(vector<cv::Mat> images, shared_ptr<TRT::Infer> engine, vector<pr::plate> &plates)
{
for(int b=0;b<batch_cur;b++)
{
pr::plate returnRes=plates[b];
if(plate_lenghth==7){
returnRes.nameList=single_name;
returnRes.confList=single_confid;
returnRes.length = plate_lenghth;
returnRes.name =name ;
returnRes.confidence = sum_confidence/plate_lenghth;
printf("length=%d,name=%s,confidence=%f\n", returnRes.length, returnRes.name.c_str(),returnRes.confidence);
for(int i=0; i<returnRes.nameList.size();i++)
{
printf("namelist_%d=%s,score=%f\n", i, returnRes.nameList[i].c_str(),returnRes.confList[i]);
}
}
这样在main.cpp和a.cpp中都没有开内存,会报断错误。 解决方法一: 修改a.cpp
int process_lpr(vector<cv::Mat> images, shared_ptr<TRT::Infer> engine, vector<pr::plate> &plates)
{
for(int b=0;b<batch_cur;b++)
{
pr::plate returnRes;
if(plate_lenghth==7){
returnRes.nameList=single_name;
returnRes.confList=single_confid;
returnRes.length = plate_lenghth;
returnRes.name =name ;
returnRes.confidence = sum_confidence/plate_lenghth;
printf("length=%d,name=%s,confidence=%f\n", returnRes.length, returnRes.name.c_str(),returnRes.confidence);
for(int i=0; i<returnRes.nameList.size();i++)
{
printf("namelist_%d=%s,score=%f\n", i, returnRes.nameList[i].c_str(),returnRes.confList[i]);
}
plates.push_back(returnRes);
}
|