这篇文章主要对easypr的实例代码的初步分析
CPlateRecognize pr;
我们首先创建一个CPlateRecognize的对象pr,接着设置pr的属性。
pr.setResultShow(false);
这句话设置EasyPR是否打开结果展示窗口,如下图。设置为true就是打开,否则就是关闭。在需要观看定位结果时,建议打开,快速运行时关闭。
pr.setDetectType(PR_DETECT_CMSER);
这句话设置EasyPR采用的车牌定位算法。CMER代表文字定位方法,SOBEL和COLOR分别代表边缘和颜色定位方法。可以通过"|"符号结合。
pr.setLifemode(true);
这句话设置开启生活模式,这个属性在定位方法为SOBEL时可以发挥作用,能增大搜索范围,提高鲁棒性。
pr.setMaxPlates(4);
这句话设置EasyPR最多查找多少个车牌。当一副图中有大于n个车牌时,EasyPR最终只会输出可能性最高的n个。
vector<CPlate> plateVec;
Mat src = imread(filepath);
int result = pr.plateRecognize(src, plateVec);
plateRecognize()这个方法有两个参数,第一个代表输入图像,第二个代表输出的车牌CPlate集合。当返回结果result为0时,代表识别成功,否则失败。
CPlate plate = plateVec.at(i);
Mat plateMat = plate.getPlateMat();
RotatedRect rrect = plate.getPlatePos();
string license = plate.getPlateStr();
plateMat代表车牌图像,rrect代表车牌的可旋转矩形位置,license代表车牌字符串,例如“蓝牌:苏EUK722”。