OpenCV检测与识别条码、二维码

使用OpenCV检测与识别条形码和二维码
本文介绍了如何使用OpenCV的BarcodeDetector和QRCodeDetector类来检测和识别条形码及二维码。BarcodeDetector目前仅支持EAN13编码的条形码,而QRCodeDetector可用于检测和识别二维码。通过detectAndDecode()方法,可以一步完成检测与识别,或者分两步先用detect()检测,再用decode()识别。此外,对于可能存在的多个二维码,可以使用detectAndDecodeMulti()方法。

原文链接:http://www.juzicode.com/opencv-note-barcodedetector-qrcodedetector

​在 zbar:给我来10G打码图片 一文中桔子菌介绍了怎么用pyzbar识别条码和二维码的方法,今天我们聊聊怎么用OpenCV检测和识别条码、二维码。

1、BarcodeDetector 识别条形码

OpenCV在V4.5.3版本的contrib包中提供了一个barcode::BarcodeDetector类,用这个类可以实现条形码的识别,不过目前仅支持EAN13编码的条形码,其他类型的条形码在当前版本的BarcodeDetector还不支持。

在Python中使用,需要先安装opencv的contrib包:

pip install opencv-contrib-python

导入模块时无差异仍然使用import cv2。

下面我们来看下具体的使用过程,首先创建一个条码检测实例:

import cv2
detect_obj = cv2.barcode_BarcodeDetector()

然后用detectAndDecode()方法检测和识别条码,该方法将检测条码的存在和识别条码封装在一起:

img = cv2.imread("bar.jpg")
is_ok, bar_info, bar_type, points = detect_obj.detectAndDecode(img)

返回的结果包含4个元素,分别是是否检测到条码、识别的条码信息、条码类型和条码位置:

print('is_ok:',is_ok)
print('bar_info:',bar_info)
print('bar_type:',bar_type)
print('points:',points)

运行结果:

is_ok: True
bar_info: ['9787121110085']
bar_type: [2]
points: [[[248.0772  446.5566 ]
  [248.50542 168.47102]
  [725.2236  169.20511]
  [724.79535 447.2907 ]]]

这其中条码位置包含了4个元素,代表了检测到的矩形框的4个角的坐标。

利用这些坐标可以在图像中标注识别到条码位置:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值