EasyPR中主要涉及到蓝色底牌与黄色底牌的车牌识别,随着新能源车辆的发展,目前已经出现绿色底牌的车牌,因此有必要增加绿色车牌的识别。

  EasyPR中关于车牌的识别,已经比较完善,这里主要涉及到三个地方的修改。

添加颜色

在自定义Color的枚举类中,添加 绿色,修改之后为:

public enum Color {UNKNOWN, BLUE, YELLOW, GREEN
};

添加绿色识别

  在OpenCV或其他软件中,识别颜色主要通过RGB映射到HSV空间,通过判断H、S、V的相关值来判断颜色的,主要原理可以参考:OpenCV颜色识别。修改之后的部分代码如下:

public static Mat colorMatch(final Mat src, final Color r,final boolean adaptive_minsv) {final float max_sv = 255;final float minref_sv = 40;final float minabs_sv = 60;// blue的H范围75-130final int min_blue = 100;final int max_blue = 140;// yellow的H范围22- 38final int min_yellow = 10;final int max_yellow = 35;// green的H范围38-75// -- 增加绿色判断范围 --final int min_green = 35;final int max_green = 80;// 转到HSV空间进行处理,颜色搜索主要使用的是H分量进行蓝色与黄色、绿色的匹配工作Mat src_hsv = new Mat();cvtColor(src, src_hsv, CV_BGR2HSV);MatVector hsvSplit = new MatVector();split(src_hsv, hsvSplit);equalizeHist(hsvSplit.get(2), hsvSplit.get(2));merge(hsvSplit, src_hsv);// 匹配模板基色,切换以查找想要的基色int min_h = 0;int max_h = 0;switch (r) {case BLUE:min_h = min_blue;max_h = max_blue;break;case YELLOW:min_h = min_yellow;max_h = max_yellow;break;case GREEN:min_h = min_green;max_h = max_green;default:break;}float diff_h = (float) ((max_h - min_h) / 2);int avg_h = (int) (min_h + diff_h);int channels = src_hsv.channels();int nRows = src_hsv.rows();// 图像数据列需要考虑通道数的影响;int nCols = src_hsv.cols() * channels;// 连续存储的数据,按一行处理if (src_hsv.isContinuous()) {nCols *= nRows;nRows = 1;}for (int i = 0; i < nRows; ++i) {BytePointer p = src_hsv.ptr(i);for (int j = 0; j < nCols; j += 3) {int H = p.get(j) & 0xFF;int S = p.get(j + 1) & 0xFF;int V = p.get(j + 2) & 0xFF;boolean colorMatched = false;if (H > min_h && H < max_h) {int Hdiff = 0;if (H > avg_h)Hdiff = H - avg_h;elseHdiff = avg_h - H;float Hdiff_p = Hdiff / diff_h;float min_sv = 0;if (true == adaptive_minsv)min_sv = minref_sv - minref_sv / 2 * (1 - Hdiff_p);elsemin_sv = minabs_sv;if ((S > min_sv && S <= max_sv)&& (V > min_sv && V <= max_sv))colorMatched = true;}if (colorMatched == true) {p.put(j, (byte) 0);p.put(j + 1, (byte) 0);p.put(j + 2, (byte) 255);} else {p.put(j, (byte) 0);p.put(j + 1, (byte) 0);p.put(j + 2, (byte) 0);}}}// 获取颜色匹配后的二值灰度图MatVector hsvSplit_done = new MatVector();split(src_hsv, hsvSplit_done);Mat src_grey = hsvSplit_done.get(2);return src_grey;
}

其中RGB与HSV颜色识别对应的关系,可以参考:OpenCV中HSV颜色模型及颜色分量范围

增加字符限制

  以前的车牌主要是7位字符,包括省 [A-Z].[5位字符] 的方式。但新能源车牌,后面5为字符变为6位字符,因此之前的判断方法不能够获取全部车牌,最好的情况也只能获得前面的7位字符。因此需要修改为:

private int RebuildRect(final Vector<Rect> vecRect, Vector<Rect> outRect,int specIndex) {// 最大只能有7个Rect,减去中文的就只有6个Rectint count = 7;// --这里将6修改为7即可--for (int i = 0; i < vecRect.size(); i++) {// 将特殊字符左边的Rect去掉,这个可能会去掉中文Rect,不过没关系,我们后面会重建。if (i < specIndex)continue;outRect.add(vecRect.get(i));if (--count == 0)break;}return 0;
}

至此,可以识别绿色车牌。

EasyPR-Java新能源车牌识别相关推荐

  1. Java matlab车牌识别,车牌识别matlab实现(蓝色车牌和新能源车牌)

    首先放上结果: 新能源车牌识别结果: 蓝色车牌识别结果: 正文开始: 1.在进行图像处理任务之前,首先要明确处理对象和处理流程 处理对象: 新能源车牌和蓝色车牌 处理流程: 2.由于要对蓝色和新能源车 ...

  2. 新能源车牌识别SDK核心算法不断更新

    新能源车牌识别SDK的应用背景 2016年12月1日,新能源车牌照在上海.深圳.南京.无锡.济南试点发行.启用新能源汽车号牌,一方面可以更有效.更便捷的区分辨识新能源汽车,实施差异化交通管理政策,为新 ...

  3. yolov3 python含新能源车牌识别系统有pyqt5界面

    yolov3 python含新能源车牌识别系统有pyqt5界面 # First download Darknet project $ git clone https://github.com/pjre ...

  4. EasyPR中文开源车牌识别系统 开发详解

     在上篇文档中作者已经简单的介绍了EasyPR,现在在本文档中详细的介绍EasyPR的开发过程. 正如淘宝诞生于一个购买来的LAMP系统,EasyPR也有它诞生的原型,起源于CSDN的taotao ...

  5. 移动端车牌识别:新能源车牌识别上线

    新能源车牌诞生背景: "2016年4月18日,为更好区分辨识新能源汽车,实施差异化交通管理,我国将启用新能源汽车专用号牌.交管局设计了新能源车牌式样,向社会公开征求意见建议,即日起公众可参与 ...

  6. 【车牌识别】模板匹配新能源车牌识别【含Matlab源码 865期】

    ⛄一.简介 1 在进行图像处理任务之前,首先要明确处理对象和处理流程 处理对象: 新能源车牌和蓝色车牌 处理流程: 2 由于要对蓝色和新能源车牌进行识别,而且新能源车牌是渐变色,所以直接通过设定阈值的 ...

  7. Java matlab车牌识别,MATLAB车牌识别 源码下载

    [实例简介] [实例截图] [核心代码] I=imread('car1.jpg'); figure(1),imshow(I);title('原图') I1=rgb2gray(I);%转换为灰度图 fi ...

  8. 新能源车辆越来越多了,车牌识别核心技术

    新能源车牌识别SDK的应用背景2016年12月1日,新能源车牌照在上海.深圳.南京.无锡.济南试点发行.启用新能源汽车号牌,一方面可以更有效.更便捷的区分辨识新能源汽车,实施差异化交通管理政策,为新能 ...

  9. 车牌识别matlab,车牌识别matlab实现(蓝色车牌和新能源车牌)

    首先放上结果: 新能源车牌识别结果: 蓝色车牌识别结果: 正文开始: 1.在进行图像处理任务之前,首先要明确处理对象和处理流程 处理对象: 新能源车牌和蓝色车牌 处理流程: 2.由于要对蓝色和新能源车 ...

最新文章

  1. 微信小程序与uniapp中 px与rpx 相互转换
  2. drupal常用api
  3. map和hasmap的区别
  4. ws配置 zuul_SpringCloud系列研究---服务网关zuul
  5. 用mysqlbinlog查看row格式的事件
  6. 嵌入式如何入门,要不要学习Python
  7. AutoHotKey Script解密
  8. Software--Architecture--SOA Factory
  9. 什么是计算机游戏技术,dlss技术是什么意思有什么用?目前支持dlss的游戏有哪些?...
  10. FileNet小错误汇总
  11. HTML5 新特性!
  12. Struck: Structured Output Tracking with Kernels
  13. Linux---积累----处理文本技巧---去重
  14. Gut:中国药科大学周伟等团队在肠道菌群驱动风湿性关节炎机制研究和中药干预方面取得新进展...
  15. Android实例-手机安全卫士(四十一)-选择自定义Toast背景
  16. MySql delete多表关联删除的使用方法
  17. OpenGL(可编程管线):Bezier曲面
  18. $我不是韭菜--基金篇(力哥P1-P6)$
  19. demoireing
  20. TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)

热门文章

  1. linux ls和ll命令学习小结
  2. Attention mask理解
  3. 计算机应用基础2019年12月所有题,2019年12月网络教育统考《计算机应用基础》复习题(九)...
  4. tpc ds安装教程 linux,TPC-DS测试hadoop 安装步骤
  5. windows防火墙 程序_如何允许应用程序通过Windows防火墙进行通信
  6. html 苹果手机输入法,苹果手机输入法的小技巧,你知道几个?最后一个一般人都不知道...
  7. iOS13.3如何越狱 checkra1n越狱工具0.9.7beta如何使用
  8. 【证明】对称矩阵特征方程k重根恰有k个线性无关的特征向量
  9. [2019牛客多校训练第3场]Median
  10. linux中tomcat部署项目步骤以及命令