目录:

一.识别库

二.从一张图片中提取多个条形码

三.注意事项

一.识别库

目前主流的识别库主要有ZXing.NET和ZBar,这里我使用的是ZBar,ZXing.NET也试过,同等条件下,识别率不高。

ZBar相关类库包括:libzbar.dll,libzbar-cil.dll,libiconv-2.dll;很奇怪为什么不能直接引用libzbar.dll,实际使用时引用的是libzbar-cil.dll,libiconv-2.dll是libzbar-cil.dll用来映射libzbar.dll的。ZBar识别库包含在源码中,文末可直接下载。

二.从一张图片中提取多个条形码

先上截图:
需要提取条形码的图片:

识别结果

主要代码:

/// <summary>/// 条码识别/// </summary>private void ScanBarCode(string fileName){DateTime now = DateTime.Now;Image primaryImage = Image.FromFile(fileName);Bitmap pImg = MakeGrayscale3((Bitmap)primaryImage);using (ZBar.ImageScanner scanner = new ZBar.ImageScanner()){scanner.SetConfiguration(ZBar.SymbolType.None, ZBar.Config.Enable, 0);scanner.SetConfiguration(ZBar.SymbolType.CODE39, ZBar.Config.Enable, 1);scanner.SetConfiguration(ZBar.SymbolType.CODE128, ZBar.Config.Enable, 1);List<ZBar.Symbol> symbols = new List<ZBar.Symbol>();symbols = scanner.Scan((Image)pImg);if (symbols != null && symbols.Count > 0){string result = string.Empty;symbols.ForEach(s => result += "条码内容:" + s.Data + " 条码质量:" + s.Quality + Environment.NewLine);MessageBox.Show(result);}}}/// <summary>/// 处理图片灰度/// </summary>/// <param name="original"></param>/// <returns></returns>public static Bitmap MakeGrayscale3(Bitmap original){//create a blank bitmap the same size as originalBitmap newBitmap = new Bitmap(original.Width, original.Height);//get a graphics object from the new imageGraphics g = Graphics.FromImage(newBitmap);//create the grayscale ColorMatrixSystem.Drawing.Imaging.ColorMatrix colorMatrix = new System.Drawing.Imaging.ColorMatrix(new float[][]{new float[] {.3f, .3f, .3f, 0, 0},new float[] {.59f, .59f, .59f, 0, 0},new float[] {.11f, .11f, .11f, 0, 0},new float[] {0, 0, 0, 1, 0},new float[] {0, 0, 0, 0, 1}});//create some image attributesImageAttributes attributes = new ImageAttributes();//set the color matrix attributeattributes.SetColorMatrix(colorMatrix);//draw the original image on the new image//using the grayscale color matrixg.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);//dispose the Graphics objectg.Dispose();return newBitmap;}

三.注意事项
如果条码识别率不高,考虑是图片的DPI不够。我的项目初期使用的是500万像素的高拍仪,拍出来的图片识别率始终不高,DPI为96。后来更换为800万像素的高拍仪,DPI为120,识别率从60%直接上升到95%+。当然,也需要对图片做一些裁剪。另外,灰度处理是必须的,可减少拍摄照片时反光引起的识别率不高问题。

在C#中使用ZBar识别条形码相关推荐

  1. Opencv+ZBar识别条形码、二维码

    文章目录 Opencv识别条形码.二维码 1.ZBar环境配置 2.一维码(条形码)识别 3. 二维码的识别 4. Opencv识别二维码 结束 Opencv识别条形码.二维码 最近的一次作业,恰好之 ...

  2. c语言编程图片识别条形码,基于Zbar的条形码图像识别算法的制作方法

    本发明涉及条形码识别技术领域,特别是涉及一种基于Zbar的条形码图像识别算法. 背景技术: 条形码是将宽度不等的多个黑条和空白,按一定的编码规则排列,用以表达一组信息的图形标识符.随着科技的迅速发展, ...

  3. 基于opencv3.0和zbar下条形码和二维码的识别与解码

    其中对条码与二维码的识别分为以下4个步骤 1. 利用opencv和Zbar(或者Zxing)对标准的条形码图片(即没有多余背景干扰,且图片没有倾斜)进行解码,将解码信息显示出来,并与原始信息对比. 2 ...

  4. winform中实现打开摄像头+识别条形码和二维码

    我们去菜鸟驿站拿快递的时候,需要我们把自己的快递拿到扫描台上扫下,表示包裹已出库.今天我们就来实现这个功能,基于winform程序开发快递单的扫描和识别,顺便也识别下二维码.用到的组件有2个,分别是A ...

  5. Python实现条码识别:从图像中自动检测和识别条形码

    Python实现条码识别:从图像中自动检测和识别条形码 在现代零售业中,条形码是一项必不可少的技术.它们提供了一种快速.准确和可靠的方法来追踪和管理库存.随着计算机视觉技术的发展,我们可以利用Pyth ...

  6. 使用zbar识别二维码

    目录 1 说明 2 软件获取 3 在Windows下使用zbar 4 在Linux PC(Ubuntu Server 1604 64位)下使用zbar 4.1 无内存泄漏的示例代码 5 在ARM Li ...

  7. 配置zbar识别二维码(转载)

    原文地址: http://blog.csdn.net/dcrmg/article/details/52108258   二维码解码器Zbar+VS2012开发环境配置 Zbar条码解码器是一个开源的二 ...

  8. Java 扫描识别条形码图片

    1.条形码扫描识别的实现方法及步骤 本文以Java代码示例介绍如何来扫描和识别条形码图片.这里使用免费的条码工具Free Spire.Barcode for Java,调用BarcodeScanner ...

  9. java条码识别技术_Java 生成、识别条形码

    条形码是由一定的字符,数字及符号组成,用以表达一组信息的图形标识符.它可以标出物品的商品名称.生产日期.图书分类号,邮件起止地点等.因而在商品流通.图书管理.邮政管理等许多领域得以广泛的应用.本文将通 ...

最新文章

  1. pythonsys模块介绍_sys 模块介绍 - Clarkhedi的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. linux命令less
  3. 功能测试工作的一点总结
  4. python 3 廖雪峰博客笔记(三) 命令行模式与交互模式
  5. 01_python2.x和python3.x中range()的区别
  6. 丢弃法(基于MXNet)
  7. 复制虚拟机出现”适配器 的mac地址在保留地址范围内‘’
  8. IntelliJ IDEA破解
  9. 一场接近于失败的胜利:CIA“星门计划”始末
  10. 取得平均薪水最高的部门的部门编号
  11. 小白Nvidia TK1 Jetpack安装/重装系统详细步骤(小车第一步)
  12. 1768 Problem A 算法7-15:迪杰斯特拉最短路径算法
  13. 计算机常用英语(键盘符号),计算机常用英语..docx
  14. 速途网范锋:重要合作可能决定网络企业生死
  15. Dubbo远程传输协议详解
  16. 穆迪分析专家贡献IFRS 9和CECL新书
  17. 比FFT还容易明白的NTT(快速数论变换)
  18. 台式电脑强制删除文件的资料恢复法子
  19. 近况(2013-12-16)
  20. 企业微信如何群发消息到客户群?

热门文章

  1. UEFI-PciHostBridge
  2. 测试常用的理论知识总结
  3. UTON便携式硬件冷钱包 安全实用易上手
  4. ArcFace,CosFace,SphereFace
  5. 点击网页上的联系我们弹出QQ对话框的实现
  6. c语言count函数的作用,count通达信什么意思,count是啥意思
  7. 如何给OpenWrt打patch补丁
  8. 计算机网络操作试题2级,计算机网络管理员操作模拟试题-二级.pdf
  9. 教师资格证笔试报名信息内部服务器错误,教师资格考试报名常见问题解决办法(2017年)...
  10. 【论文阅读】Exploring the Limitations of Behavior Cloning for Autonomous Driving