学习OpenCV——对图像中的多个条形码进行定位

本文探讨了条码识别工具zxing与zbar的使用,特别是在C#与Python中的应用。详细介绍了如何利用pyzbar识别多张条码并获取其位置信息,以及在OpenCVSharp中实现条码定位与识别的算法优化过程。

最近搞了搞条码识别相关的东西,今天总结一下。

我们常用的条码识别工具有zxing、zbar等等。zxing的使用比较简单,一个函数直接调用就可以了,但是目前我发现它只能识别一张图中的一个条码,如果你要读多个条码那是不行的。这里贴一下使用方法:

Bitmap code_bmp = roi.ToBitmap();
BarcodeReader reader = new BarcodeReader();
reader.Options.CharacterSet = "UTF-8";
reader.Options.PureBarcode = false;
using (Bitmap bmp = code_bmp)
{
    Result result = reader.Decode(bmp);
    inf = result.Text.ToString();
}

然后就是zbar,python有pyzbar这个包,亲测是比较好用的,它可以同时识别一张图上的多个条码,而且还可以给出每个条码的位置信息。这是我在网上找到的代码,并且也自己试了一下:

    frame = cv2.imread('/test/9.bmp')
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    barcodes = pyzbar.decode(gray)
    for barcode in barcodes:
        # 提取条形码的边界框的位置
        # 画出图像中条形码的边界框
        (x, y, w, h) = barcode.rect
        cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 255, 0), 2)

        # 条形码数据为字节对象,所以如果我们想在输出图像上
        #  画出来,就需要先将它转换成字符串
        barcodeData = barco
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值