前言:
最近一个项目要发快递, 发完以后需要把单号录入后台. 暂时想到两种方案:
1. 手机拍照上传服务器, 服务器识别. (优点 不用开发手机端; 缺点 费流量, 虽然手机画质调最小一张照片也就100k)
2. 做手机混合App, 手机端识别. (优点 省流量, 更便捷; 缺点 仅会一点Android, 苹果完全没玩过)
Anyway, 先把图像识别做出来, 其他都好说. 因为各个快递公司条码编码方式不同, 图像识别也有两种方案: 1. 识别条码. (优点 识别简单; 缺点 需要学习多种编码方式) 2. 识别条码下方数字单号. (优点 直接; 缺点 需要进行机器学习, 不过应该不难, 毕竟都是打印的数字) 大概流程是这样的: a. 获得照片(一般是快递单条码的特写), b. 找到识别部分(条码或单号), c. 识别.ac暂且不说, 先做做b.
转载请声明出处: http://www.cnblogs.com/zaiyuzhong/p/discern-shipment-waybill-1.html
正文:
一. 图像二值化 我首先想到的就是这个, 因为条码和单号都是黑色, 快递单又是多层的, 下层的单号很容易就透上来了. 1. 用RGB平均值将图片灰度化; (与人眼无关不需要用加权平均, RGB最大值得出图像偏亮) 2. 因为拍照环境的光线问题, 使用的OTSU算法不能很有效的去除手机遮挡光源产生的阴影, 所以我没有取1/2点作为阀值. 测试几张图片后发现1/2.1~1/2.5之间效果较好, 于是取1/2.3, 这个需要再多一些图片做测试, 但是我准备换Kittler算法. 以上从左到右分别是 原图 1/2灰度点阀值 1/2.3灰度点阀值 (白色块是后补的, 位置稍微不同别介意)
时间: 2024-10-05 04:58:39