




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法模块接口说明检测识别模块接口采用 C+接口类的形式提供,定义如下:#include #include #include VeCv.hclass C Structure; enum ObjTypeeCar,/轿车eTruk,/货车eMinibus,/面包车eBus,/车eBigTruck,/大货车 eSportyCar,/跑车 eFireTruck,/消防车 eBicycle,/自行车 eMotorBike,/摩托车 eTriCar,/三轮车 eElectricCar, /电动车 eHuman/行人;/位置框typedef struct _VRectnX;nY; nWidth; nHeigh
2、t;VRect;/目标框位置坐标typedef struct _objPoguid;/目标在当前帧的 ID VRect rect;/目标框位置 ObjType type; /目标类型objPo;/*CB_DETECT_IMG 实时检测回调函数n:当前相机或ID (表示第几路相机)pImage:当前帧图像原图指针arrObjRect:当前上的实时目标位置*/typedef(*CB_DETECT_IMG)(n, IplImage * pImage, conststd:vector & arrObjRect);/*CB_RESULT_IMG 识别目标结果回调函数 strResult:识别结果 jso
3、n 字符串 pObjImage :识别结果Image:当前帧:当前相机或原图IDpn(表示第几路相机)*/typedef(*CB_RESULT_IMG)(const std:string & strResult, IplImage*pObjImage, IplImage* pImage,n);/*_FINISH:本地文件等识别完毕执行的回调函数CB_n:当前相机或ID (表示第几路相机)pUserData:用户句柄*/typedef void(*CB_FINISH)(n, void*pUserData);class Cprivate: Cpublic:Structureerface Struc
4、ture* m_vst;/*C*/ CStructureerface 接口构造函数Structureerface();/*VS_StartService 启动服务 初始化资源路数nChannelNum :nDetectNum : 检测模块数(目前与 nChannelNum 一致,最新版本库,占用显存很少可以与路数相等)nVehicleRecoNum : 识别模块数检测回调函数cb_detectcb_result bIsLog*/::识别结果回调函数:是否输出日志(简单日志库没有分级)VS_StartService(nChannelNum,nDetectNum,nRecoNum, CB_DETE
5、CT_IMGcb_detect, CB_RESULT_IMG cb_result, boolbIsLog = true);/*VS_StopService 停止服务VS_StopService();资源*/*VS_AddImageID(属于哪一路)np:Image:*/VS_AddImage(long luTime);n, IplImage* pImage, unsignedlong/*VS_SetEnableCallback:开启某一路实时显示:nIDbool b_cbdetect:开启或关闭检测回调 bool b_cbresult:开启或关闭识别回调成功返回 1,失败返回-1*/VS_Se
6、tCallback(enableResultCallback);n, boolenableDetectCallback,bool/*Finish:本地输入完毕接口VS_n:ID处理完毕回调cb_finispUserData:用户数据*/VS_pUserData);Finish(n, CB_FINISH cb_finish,void*/*函数名称:string VS_GetVer()函数作用:获取版本编译时间与版本号*/std:string VS_GetVer();1.1.1 接口说明 算法库启动初始化函数VS_StartService(nChannelNum,nDetectNum,nRecoN
7、um, CB_DETECT_IMGcb_detect, CB_RESULT_IMG cb_result, bool bIsLog = true);参数说明:nChannelNum : 输入的路数,指代数量,根据具体情况而定nDetectNum:启动检测线程个数,指代数量,由于最新版本识别库,占用显存很少,这个数量可以和当前路数一致nRecoNum:识别线程启动个数,指代数量,P4 一块卡开一路识别即可,根据具体情况cb_detect: 实时与实时检测结果回调函数cb_result: 单个目标识别结果回调bIsLog:Structure.log 日志文件是否生成,不分等级,相当于只有INFO 和
8、QUIET 两个等级 算法库实时检测数据输出回调函数typedef(*CB_DETECT_IMG)(n, IplImage * pImage, const std:vector &arrObjRect);参数说明:当前路数,指代索引,外部传入的原图上包含的所有目标的位置及 guid,可根据位置绘制图框倒上,npImage:当前帧arrObjRect:当前帧越界可根据输出位置判断,并将目标截取 算法库识别结果数据输出回调函数typedef(*CB_RESULT_IMG)(const std:string & strResult, IplImage* pObjImage, IplImage*pIm
9、age,n);参数说明:strResult:输出结果字符串pObjImage:输出识别结果对应的目标pImage:输出识别结果对应的当前帧原图:当前识别帧路数,指代索引n 算法库单独增加开启某一路实时回调,关闭某一路实时回调VS_SetCallback(n, bool enableDetectCallback, bool enableResultCallback);VS_SetEnableCallback:开启某一路实时显示:IDnbool b_cbdetect:开启或关闭检测回调 bool b_cbresult:开启或关闭识别回调成功返回 1,失败返回-1 算法库本地或者历史完毕通知接口VS
10、_Finish(n, CB_输入完毕接口_FINISH cb_finish, void* pUserData);Finish: 本地VS_n:ID处理完毕回调cb_finish:pUserData:用户数据成功返回 1,失败返回-1算法库本地或者历史完毕通知回调typedef void(*CB_FINISH)(n, void* pUserData);_FINISH: 本地文件等识别完毕执行的回调函数CB_n: 当前相机或ID (表示第几路相机)pUserData: 用户句柄 算法库数据函数VS_AddImage(VS_AddImage:n, IplImage* pImage, unsigned
11、 long long luTime);:ID(属于哪一路)npImage:1.2 接口示例如下:#include Structureerface.h #include #include #include #include #include #include #include #include #include #include std:queue queue_image; std:mutex mutex_queue;CStructureerface cvs;/实例化结构化接口类void DisplayPt(const std:vector& arrPt)for(objPob : arrPt)s
12、td:cout guid: b.guid objtype: b.type X: b.rect.nX Y: b.rect.nY Width: b.rect.nWidth Height: b.rect.nHeight std:endl;/实时回调DrawDetectImg(n, IplImage * pDetectimage,const std:vector& arrPt)char chName20;sprf(chName, test%d, n); DisplayPt(arrPt); cvReleaseImage(&pDetectimage);/识别结果回调DrawResultImg(const
13、std:string& strResult, IplImage* pObjImage,IplImage* pImage,n)cvReleaseImage(&pObjImage); /内存cvReleaseImage(&pImage);/历史 void完毕回调FinishCB(n, void* pUserData)CvCapture *capture= (CvCapture*)pUserData;cvReleaseCapture(&capture);ThrerocShowImage()while (1)mutex_queue.lock();if (queue_image.empty()mutex
14、_queue.unlock(); usleep(1 * 1000); continue;IplImage* image = queue_image.front(); queue_image.pop(); mutex_queue.unlock();unsigned long long lutime = 0;cvs.VS_AddImage(0, image, lutime); cvReleaseImage(&image);void ImageAdd(void* pArgs)char* pStrPath = (char*)pArgs; char chWinName10 = 0 ;CvCapture
15、*capture = cvCreateFileCapture(pStrPath); if (capture != NULL)prf(本地i = 0;for (;)文件成功 %sn, pStrPath);IplImage * mage = cvQueryFrame(capture);if ( mage = NULL)std:coutvedio file completestd:endl;cvs.VS_break;Finish(0,FinishCB, (void*)capture);IplImage * image = cvCloneImagmutex_queue.lock(); queue_im
16、age.push(image); mutex_queue.unlock(); cvWaitKey(1000 / 25);mage);main(argc, const char*argv)if (argc= 3)std:cout argument error std:endl;XInitThreads();nChannels = std:stod(argv1); nDetectNum = std:stod(argv2); nCarRecoNum = std:stod(argv3);std:cout argument std:endl;std:coutnChannels nDetectNum nC
17、arRecoNumstd:endl;std:cout verstd:string strVer std:cout strVer std:endl;= cvs.VS_GetVer();.c_str() std:endl;std:cout servitart std:endl;cvs.VS_StartService(nChannels, nDetectNum,nCarRecoNum,DrawDetectImg, DrawResultImg, true);/启动服务std:cout push image std:endl;std:thread t(ImageAdd, (void*)argv4);st
18、d:thread t1(ThrerocShowImage);1.3 具体例子在 example 文件夹中cvs.VS_SetCallback(0, false, false); sleep(10);cvs.VS_SetCallback(0, true, true);while(1)usleep(1000 * 10);cvs.VS_StopService(); return 0;以图搜图 sdk 说明接口采用 C+接口类的形式提供,定义如下:#include opencv2/opencv.hpp #include #include typedef long long VE_HANDLE;/两个程
19、序,以下结构体枚举等重新定义 enum ObjTypeeCar,/轿车eTruk,/货车eMinibus,/面包车eBus,/车eBigTruck,/大货车 eSportyCar,/跑车 eFireTruck,/消防车 eBicycle,/自行车 eMotorBike,/摩托车 eTriCar,/三轮车 eElectricCar, /电动车 eHuman/行人;/位置框typedef struct _VRectnX;nY; nWidth; nHeight;VRect;/目标框位置坐标typedef struct _objPoguid;/目标在当前帧的 ID VRect rect;/目标框位置
20、ObjType type; /目标类型objPo;/初始化VE_HANDLE Ve_InitVehicleReco();2.1.1 以图搜车接口说明Ve_GetVechicleReco(VE_HANDLEh,IplImage*pRGBImage,conststd:vector& arrObjRect, std:vector& arrResult);VE_HANDLE h: 输入参数,识别需要用到的句柄 arrObjRect: 输入参数,输入目标的信息 IplImage *pRGBImage:输入参数,需要识别的std:vector& arrResult:输出参数,输出目标结果,与结构化识别出的
21、 json 协议一致,相同的方式机动车,非机动车,行人可以使用同一个接口/识别接口一Ve_GetVechicleReco(VE_HANDLE h, IplImage *pRGBImage, const std:vector& arrObjRect, std:vector& arrResult);/识别接口二Ve_GetVechicleReco(VE_HANDLE h, IplImage *pRGBImage, std:vector & arrResult);/资源void Ve_UninitVehicleReco(VE_HANDLE h);/*函数名称:string Ve_GetVer()函数
22、作用:获取版本编译时间与版本号*/std:string Ve_GetVer();2.2 以图搜图接口示例2.3 测试例子在 testfindcar 文件夹下#include VehicleSearchA .hmain(argc, char* argv)std:string strVer= Ve_GetVer(); std:cout strVer.c_str() width; rc.nHeight =mg-height; std:vector arrObjRect; std:vector arrResult;ret = Ve_GetVechicleReco(h,mg, arrObjRect, a
23、rrResult); if(ret 0)for(i = 0; i arrResult.size() i+)prf(%sn, arrResulti.c_str();elseprf(get result failed);prf(test endln); getchar(); Ve_UninitVehicleReco(h); prf(test endl 2n); getchar();return 0;配置文件说明算法配置文件说明m_optDetectM=./objdetect/all/v3 humanFeaReco=1vehicleFeaReco=1 forwardDirection=0 360ve
24、hicleFeaReco=1 GPUNUM=1detectAlg=1 detec=35DetectSpe=1 Ex=11LineStartAX=0 LineStartAY=0 LineEndAX=0 LineEndAY=0 LineStartBX=0 LineStartBY=0 LineEndBX=0 LineEndBY=0 LineStartCX=0 LineStartCY=0 LineEndCX=0 LineEndCY=0boderEdge1=0 boderEdge2=10 boderEdge3=0 boderEdge4=10 edgeEnable=1 minPlateScore=10 D
25、efaultPlate= useDefaultPlate=0 detectThresh=20 detectThreshOfVehicle=15 detectThreshOfHuman=15 detectThreshOfNoCar=15 capturerange=100 widthdivheight=18 captureedgerange=0 MinimumHuman x=10MinimumCar x=10以上配置文在 config/config.ini 目录中,下面仅介绍一下可能会用到的参数forwardDirection=0是否开启单向识别,1 开启,0 关闭,开启后只抓车头使用几块显卡GPUNUM=1MinimumHuman x=10抓取的行人最小目标像素值,即过滤掉特别小的目标,设成 0 表示不过滤抓取的机动车最小目标像素值,即过滤掉特别小的目标,设成 0MinimumCar x=10表示不过滤MinimumNocar x=10抓取的非机动车最小目标像素值,即过滤掉特别小的目标,设成0 表示不过滤检
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45129-2025增强纱线在水泥中强度的测定
- 水泥柱模具施工方案
- 楼盘楼面花架施工方案
- 石材外墙施工方案
- TSHLX 005-2024 太阳能电池边框用铝合金型材
- 二零二五年度美甲店营销推广合作框架协议
- 二零二五年度人力资源服务销售提成与职业规划合同
- 二零二五年度石油开采施工安全协议
- 二零二五年度重庆市文化创意产业园区租赁协议
- 二零二五年度农机作业与农业风险管理合作合同
- 通信施工安全生产培训(登高作业施工专题)
- 2015产后出血技能评分表new
- 人教版五年级下册口算题大全(全册齐全)
- 企业生产管理-9S现场管理培训PPT课件教材讲义
- 护学岗值班登记表
- 猪场赶猪方案
- 2023年山东医学高等专科学校高职单招(语文)试题库含答案解析
- 183-压力计量器具检定系统框图
- 先天性肥厚性幽门狭窄精选课件
- 遥感概论第1章:绪论
- 仪表基础培训(联锁逻辑)
评论
0/150
提交评论