实战-OpenCV+ZXing开源实现工业级条码识别 仅做收藏

博主通过深度预处理和OpenCV+ZXing技术,解决了一款商业收费条码识别库的低识别率和慢速问题,成功提升31张图片的识别率至40毫秒,展示了技术改进的成果和优化潜力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

好友跟我说有些不能识别的条码,我对这个很感兴趣,因为我知道除了条码图像本身质量问题,有些条码不能识别是因为预处理的原因,做好预处理,还可以提升一波识别率的,另外一个吐槽的地方就是识别的时间特别漫长,一张图需要1秒多,它们每张图的大小是2736x2736,所以我让他把不能识别的图像都发我一些,他总计给了我 54张。这里要特别交代一下它们用的库是一个国内的商业收费条码识别库!

Image

所以这个事情面临两个问题:一个是识别率不满意,二个速度慢,第三个还得花钱!

提升方法效果

先看一下数据,截图如下:

Image

然后我一波疯狂预处理变成这样:

Image

看到那些二值化之后的白色区域了吗?它就是条码所在区域,只要获取条码所在区域,然后扔到ZXing的decode方法中就会有结果了?理论上是这样,先要把条码区域扣出来,这个就涉及到二值图像分析的轮廓处理,经过一番轮廓分析之后,我得到了每张图上每个可疑条码所在区域,然后我就送到ZXing解码函数中,完成解码,这段代码如下:

types.push_back(CODE_TYPE::DATA_MATRIX);types.push_back(CODE_TYPE::MAXICODE);types.push_back(CODE_TYPE::QR_CODE);types.push_back(CODE_TYPE::AZTEC);types.push_back(CODE_TYPE::CODABAR);types.push_back(CODE_TYPE::CODE_128);types.push_back(CODE_TYPE::CODE_39);types.push_back(CODE_TYPE::CODE_93);reader.initConfig(types, cv::Mat());reader.decode_ver2(image, txtInfo, 5, true);

然后从txtInfo中接受返回结果:

txtInfo.status 返回0表示识别,-1表示未识别txtInfo.code 返回识别字符串

运行结果如下:

Image

54张商业库不能识别的,我们成功识别出31张!关键是速度平均都在40毫秒左右!实现了速度、识别率双提升!这个就是我用OpenCV+ZXing给出的初步结果,我看了图像,发现还有继续优化预处理的空间!有些还应该被识别!

后记:

由于各种原因不能发原图,就发一些缩略图!源码,我到底要不要放出来?大家说吧!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值