javacv+dnn实现车牌识别,精度还不错

基于javacv dnn加载tensorflow模型实现的java版本车牌识别项目dnn-lpr,这个不是最好的实现方式,但也不错,所以开源出来,供java社区的学习玩玩。

源码已经上传到: http://git.jimingyun.cn:88/open/dnn-lp   不需要注册直接当下代码

优点:快速,字符定位准确率高,在闸机口目前实现95%的精确度

缺点:需要大量的车牌字符标记,标记工作繁重,目前项目中仅仅采用了4000张车牌进行字符标记,如果能有更多的标记数据,识别精度可以做到更高

封装后使用非常简单,几行代码就完成识别:

 //false:不开启日志输出    "":日志输出目录   1:最大支持并发数
   LPR lpr = new LPR(fasle, "", 1);
   //加载车牌图片,注意javacv不支持中文的路径
   Mat src = imread("H:\\cars_test\\jin_JSS102.jpg");
   //识别
   List<CarId> ids = lpr.find(src);
   //javacv 的Mat实际是在c内存空间里面的,所有操作都是通过jni去调用,所以需要手动回收内存,jvm是没办法去自动回收的
   src.close();
   //打印识别结果
   for(CarId id:ids) {
		if(id.getAvgVal() > 0.8) {
				tx.append("车牌_id=" + id.getId() + "准确度_val=" + id.getAvgVal() + "  ");
				id.close();//id 释放资源
		}
	}

 

如何使用dnn-lpr?

参照项目里这个类

cn.jiming.dnn.lpr.test.LprTest

 

识别结果展示:

识别结果    id=浙F79W39 val=1.0

识别结果    id=桂M9G126 val=0.999750188418797

 

总结:在车牌清晰和角度较正的情况下识别效果比较好,要想解决大角度识别问题,必须引入unet网络对车牌进行定位并通过放射变换矫正车牌,这样就可以识别角度大的车牌了,本人已经有成熟的版本,但不能开源,不过好在可以提供一个公网的服务进行http调用,大家敬请期待吧!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值