最近搞了搞条码识别相关的东西,今天总结一下。
我们常用的条码识别工具有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

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





