From 93001d715c38b296bedf2b2e5f4d1efb3151f666 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期四, 14 十一月 2019 16:31:24 +0800 Subject: [PATCH] fix:set the plate sdk parameters by api --- csrc/buz/plate/detector.cpp | 127 ++++++++++++++++++++++++++++++------------ 1 files changed, 91 insertions(+), 36 deletions(-) diff --git a/csrc/buz/plate/detector.cpp b/csrc/buz/plate/detector.cpp index 81b2874..17e2747 100644 --- a/csrc/buz/plate/detector.cpp +++ b/csrc/buz/plate/detector.cpp @@ -12,38 +12,12 @@ static unsigned char *fmem; static unsigned char *pmem; - int init_plate_id_detector(const int width, const int height, char *soPath) { - int fMemSize = 0x8000; - int pMemSize = 200 * 1024 * 1024; + void init_plate_id_config(const cPlateIDCfg *params); + void set_enable_plate_format(const cPlateIDCfg *params); - fmem = (unsigned char*)malloc(fMemSize * sizeof(unsigned char)); - pmem = (unsigned char*)malloc(pMemSize * sizeof(unsigned char)); - - config.nMinPlateWidth = 60; - config.nMaxPlateWidth = 400; - config.nMaxImageWidth = width; - config.nMaxImageHeight = height; - - config.bVertCompress = 0; - config.bIsFieldImage = 0; - config.bOutputSingleFrame = 1; - - config.pFastMemory = fmem; - config.nFastMemorySize = fMemSize; - config.pMemory = pmem; - config.nMemorySize= pMemSize; - - config.bUTF8 = 1; - - // 鍔ㄦ�佹ā寮� - config.bMovingImage = 1; - config.nImageFormat = ImageFormatBGR; - - // 闈欐�佹ā寮� - // config.bMovingImage = 0; - - // 璇嗗埆杞﹀瀷 - config.bCarModel = 1; + int init_plate_id_detector(const cPlateIDCfg *params, char *soPath) { + // 鍒濆鍖栭厤缃弬鏁� + init_plate_id_config(params); // 璁剧疆Licence Manager杩愯璺緞 int ret = TH_SetSoPath(soPath); @@ -51,17 +25,98 @@ // 鍒濆鍖� sdk ret = TH_InitPlateIDSDK(&config); - // 寮�鍚柊鑳芥簮杞︾墝璇嗗埆 - ret = TH_SetEnabledPlateFormat(PARAM_NEWENERGY_ON, &config); - - ret = TH_SetImageFormat(ImageFormatBGR, false, false, &config); + // 璁剧疆杞︾墝绫诲瀷璇嗗埆 + set_enable_plate_format(params); // 璁剧疆璇嗗埆闃堝�� - TH_SetRecogThreshold(5, 2, &config); + TH_SetRecogThreshold(params->bLocateTh, params->bOCRTh, &config); return ret; } + void init_plate_id_config(const cPlateIDCfg *params) { + int fMemSize = 0x8000; + int pMemSize = 200 * 1024 * 1024; + + fmem = (unsigned char*)malloc(fMemSize * sizeof(unsigned char)); + pmem = (unsigned char*)malloc(pMemSize * sizeof(unsigned char)); + + // 榛樿鍙傛暟 + config.nMinPlateWidth = 60; + config.nMaxPlateWidth = 400; + config.bVertCompress = 0; + config.nImageFormat = ImageFormatBGR; + config.bOutputSingleFrame = 1; + config.bUTF8 = 1; + + config.pFastMemory = fmem; + config.nFastMemorySize = fMemSize; + config.pMemory = pmem; + config.nMemorySize= pMemSize; + + if (params->nMinPlateWidth > 60 && params->nMinPlateWidth < 400) { + config.nMinPlateWidth = params->nMinPlateWidth; + } + if (params->nMaxPlateWidth > 60 && params->nMaxPlateWidth < 400) { + config.nMaxPlateWidth = params->nMaxPlateWidth; + } + + config.nMaxImageWidth = params->nMaxImageWidth; + config.nMaxImageHeight = params->nMaxImageHeight; + config.bIsFieldImage = params->bIsFieldImage; + config.bMovingImage = params->bMovingImage; + config.nOrderOpt = params->nOrderOpt; + config.bLeanCorrection = params->bLeanCorrection; + config.nImproveSpeed = params->nImproveSpeed; + config.bCarLogo = params->bCarLogo; + config.bLotDetect = params->bLotDetect; + config.bShadow = params->bShadow; + config.bShieldRailing = params->bShieldRailing; + config.bCarModel = params->bCarModel; + } + + void set_enable_plate_format(const cPlateIDCfg *params) { + if (params->bOnlyLocation == 1) { + TH_SetEnabledPlateFormat(PARAM_ONLY_LOCATION_ON, &config); + } + if (params->bOnlyTwoRowYellow == 1) { + TH_SetEnabledPlateFormat(PARAM_ONLY_TWOROWYELLOW_ON, &config); + } + if (params->bIndividual == 1) { + TH_SetEnabledPlateFormat(PARAM_INDIVIDUAL_ON, &config); + } + if (params->bTwoRowYellow == 1) { + TH_SetEnabledPlateFormat(PARAM_TWOROWYELLOW_ON, &config); + } + if (params->bArmPolice == 1) { + TH_SetEnabledPlateFormat(PARAM_ARMPOLICE_ON, &config); + } + if (params->bArmPolice2 == 1) { + TH_SetEnabledPlateFormat(PARAM_ARMPOLICE2_ON, &config); + } + if (params->bTwoRowArmy == 1) { + TH_SetEnabledPlateFormat(PARAM_TWOROWARMY_ON, &config); + } + if (params->bTractor == 1) { + TH_SetEnabledPlateFormat(PARAM_TRACTOR_ON, &config); + } + if (params->bEmbassy == 1) { + TH_SetEnabledPlateFormat(PARAM_EMBASSY_ON, &config); + } + if (params->bChangNei == 1) { + TH_SetEnabledPlateFormat(PARAM_CHANGNEI_ON, &config); + } + if (params->bMinHang == 1) { + TH_SetEnabledPlateFormat(PARAM_MINHANG_ON, &config); + } + if (params->bConsulate == 1) { + TH_SetEnabledPlateFormat(PARAM_CONSULATE_ON, &config); + } + if (params->bNewEnergy == 1) { + TH_SetEnabledPlateFormat(PARAM_NEWENERGY_ON, &config); + } + } + cPlateIDResult* plate_id_detect(int *plateIDCount, const cIMAGE *img) { if (!img) { return NULL; -- Gitblit v1.8.0