- (public:)
static PlateJudge* instance()void LoadModel(std::string path)int plateJudgeUsingNMS(const std::vector<CPlate>&, std::vector<CPlate>&, int maxPlates = 5)int plateSetScore(CPlate& plate)int plateJudge(const Mat& plateMat)int plateJudge(const std::vector<Mat> &inVec,std::vector<Mat> &resultVec)int plateJudge(const std::vector<CPlate> &inVec,std::vector<CPlate> &resultVec)void NMS(std::vector<CPlate> &inVec, std::vector<CPlate> &resultVec, double overlap)int PlateJudge::plateJudgeUsingNMS(const std::vector<CPlate> &inVec, std::vector<CPlate> &resultVec, int maxPlates)
- (private:)
- 静态变量
instance_,用于单例模式
- 单例模式初始化方法,当
instance_为nullptr时,初始化一个PlateJudge - 返回
instance_
- 加载
svm的模型,在config.h中配置模型路径 - 可选择是否使用
LBP模型,因为暂时没有这个模型,所以使用的是Hist
- 输入参数为路径
path - 如果
path与默认kDefaultSvmPath路径不同,则加载path下的模型,如果相同,那么加载的模型和kDefaultSvmPath路径下的相同
- 这个函数通过
SVM为输入的CPlate计算分数,小于0且越小为车牌的可能性越大 - 方法判定
score大于0.5的CPlate为不是车牌 - 返回值为
0表示是车牌,返回值为-1表示不是车牌
- 调用
plateSetScore得到0/-1并返回,0代表是车牌,1表示不是车牌
- 输入为
Mat的集合inVec,代表了需要判断的Mat的集合 - 输出为
resultVec,代表了所有可能是车牌的集合 return 0
- 输入为
CPlate的集合inVec,代表了需要判断的CPlate的集合 - 输出为
resultVec,代表了所有可能是车牌的集合 - 和
int plateJudge(const std::vector<Mat> &inVec,std::vector<Mat> &resultVec)不同的是,在这个方法中会进行一次矩形的缩小再判断 return 0