C#条码识别的解决方案(ZBar)

这篇具有很好参考价值的文章主要介绍了C#条码识别的解决方案(ZBar)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

主流的识别库主要有ZXing.NET和ZBar,OpenCV 4.0后加入了QR码检测和解码功能。本文使用的是ZBar,同等条件下ZBar识别率更高,图片和部分代码参考在C#中使用ZBar识别条形码。

使用ZBar

通过NuGet安装ZBar,必须使用1.0.0版本,最新的1.0.2版本无法自动生成相关的dll并且使用不了1.0.0版的dll。
库默认支持netcoreapp3.1,在.NET6环境下也能正常使用,正常情况下输出目录会自动生成lib文件夹和dll文件
注:ZBar 1.0.0在x86平台下可正常运行,但Debug会报错,建议使用x64或AnyCPU。

条码识别:

/// <summary>
/// 条码识别
/// </summary>
static List<ZBar.Symbol> ScanBarCode(string filename)
{
    var bitmap = (Bitmap)Image.FromFile(filename);
    bitmap = MakeGrayscale3(bitmap);
    List<ZBar.Symbol> result = new List<ZBar.Symbol>();
    using (var scanner = new ZBar.ImageScanner())
    {
        var symbols = scanner.Scan(bitmap);
        if (symbols != null && symbols.Count > 0)
        {
            result.AddRange(symbols);
        }
    }
    return result;
}

/// <summary>
/// 处理图片灰度
/// </summary>
static Bitmap MakeGrayscale3(Bitmap original)
{
    //create a blank bitmap the same size as original
    Bitmap newBitmap = new Bitmap(original.Width, original.Height);

    //get a graphics object from the new image
    Graphics g = Graphics.FromImage(newBitmap);

    //create the grayscale ColorMatrix
    System.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 attributes
    ImageAttributes attributes = new ImageAttributes();
    //set the color matrix attribute
    attributes.SetColorMatrix(colorMatrix);
    //draw the original image on the new image
    //using the grayscale color matrix
    g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
       0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);

    //dispose the Graphics object
    g.Dispose();
    return newBitmap;
}

使用方法:

Console.WriteLine(ZBar.ZBar.Version);
var symbols = ScanBarCode("426301-20160127111209879-611759974.jpg");
string result = string.Empty;
symbols.ForEach(s => Console.WriteLine($"条码类型:{s.Type} 条码内容:{s.Data} 条码质量:{s.Quality}"));
Console.ReadKey();

扩展:其它条码识别库

在C#平台下还有一个ThoughtWorks.QRCode库也支持条码解析,具体效果还没有测试。原始代码最后的版本是在2015年,后面的版本只是将库做了个标准版,按自己的需求选择版本:

  • ThoughtWorks.QRCode:原始版本,最后更新时间2015年。
  • ThoughtWorks.QRCode.Standard(推荐使用):netstandard2.0版本,修复bug,增加了自动QRCodeVersion功能。
  • ThoughtWorks.QRCode.Core:netstandard2.0版本,功能未修复变更。

识别库使用方法参考:C#使用zxing,zbar,thoughtworkQRcode解析二维码,附源代码。

扩展:开源扫码软件

推荐一个C# WPF 原生开发的在电脑上识别条码的工具软件QrCodeScanner,功能如下:文章来源地址https://www.toymoban.com/news/detail-598060.html

  • 支持四种模式:截图识别 + 摄像头识别 + 本地图片识别 + 作为扫描枪使用
  • 支持ZbarZxing两种主流引擎
  • 支持多码同扫
  • 支持Material Design缤纷主题色与暗黑模式
  • 独创的扫描枪模式
    C#条码识别的解决方案(ZBar)

附件

  • 测试项目、开源备份(提取码: f4gp):https://pan.baidu.com/s/1OxpUv-8ApDWznxtSvbbNWg

到了这里,关于C#条码识别的解决方案(ZBar)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#修改解决方案的名称 和解决方案文件夹的名称 ,及项目程序名称,项目文件夹名称

    修改失败了,没有备份就得炸裂,一定要切记 右键项目- 属性 - 应用程序 先将 程序集名称 与 默认命名空间 先修改好 其次,在按组合键ctrl+ f 将原来的项目名称,替换成新的名称; 替换时,一定要针对整个解决方案进行替换 ----切记 关闭解决方案 ,一定要关闭 出现无法加

    2023年04月09日
    浏览(74)
  • C#进阶-IIS应用程序池崩溃的解决方案

    IIS是微软开发的Web服务器软件,被广泛用于Windows平台上的网站托管。在使用IIS过程中,可能会遇到应用程序池崩溃的问题,原因可能有很多,包括代码错误、资源不足、进程冲突等。本文将为大家介绍IIS应用程序池崩溃的问题分析和解决方案。如果您在IIS的Events日志下观察到

    2024年02月03日
    浏览(44)
  • C# WPF编辑时显示图片,运行时不显示图片的解决方案

    1、WPF语法 2、设置图片属性 复制到输出目录设为:始终复制 生成操作设置为:资源

    2024年02月16日
    浏览(35)
  • 基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章

           最近在整理和编写基于C#的WinForm应用程序,然后碰到一个其他读者也可能碰到的问题,就是C#的Borderless无边框窗体的动画效果问题。        在Visual Studio 2022里,C#的WinForm程序提供了Borderless无边框窗体的样式效果,但是它没提供在无边框窗体下,窗体的载入、最小

    2024年02月15日
    浏览(38)
  • Halcon——C#中在HWindow上显示字符串遇见的问题及解决方案

    在视觉项目中通常会用HWindiw显示图像处理过后的内容,并推送一些数据信息。在实际实现的过程中,遇到了一些小问题。网上的答案也并不是很详细全面,在此做自己的总结。 c#代码形式:HalconWindow是HWindow类型。 ps:genParamName中可以参数详情 ‘font’: 设置字体的名称。例如

    2024年02月15日
    浏览(39)
  • 基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章

    今次介绍一个应用程序单例唯一运行方案的代码。 我们知道,有些应用程序在操作系统中需要单例唯一运行,因为程序多开的话会对程序运行效果有影响,最基本的例子就是打印机,只能运行一个实例。这里将笔者单例运行的代码共享出来,需要的读者请自己复用该代码到自

    2024年02月14日
    浏览(47)
  • C# Emgu.CV 条码检测

    目录 效果 ​项目  代码 下载  using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.Util; using static Emgu.CV.BarcodeDetector; namespace Emgu.CV_条码检测 {     public partial class F

    2024年02月10日
    浏览(35)
  • c# .net6 在线条码打印基于

    条码打印基于:BarTender、ORM EF架构 UI展示: 主页代码: 1.条码打印实现类 实体类:

    2024年02月08日
    浏览(40)
  • 条码控件Aspose.BarCode入门教程(8):C#从图像中读取条形码

    Aspose.BarCode for .NET 是一个功能强大的API,可以从任意角度生成和识别多种图像类型的一维和二维条形码。开发人员可以轻松添加条形码生成和识别功能,以及在.NET应用程序中将生成的条形码导出为高质量的图像格式。 Aspose API支持流行文件格式处理,并允许将各类文档导出或

    2023年04月25日
    浏览(47)
  • 智慧社区解决方案核心要点有哪些 智慧社区解决方案

    智慧社区解决方案核心要点有哪些 智慧社区解决方案 城市的发展意味着生产与消费的集中化与规模化,这些改变带来了生产效率的提高。而智慧社区解决方案核心要点有哪些呢?下面跟着小编一起去了解下! 智慧社区解决方案核心要点有哪些:数字化 大数据、云计算等新技

    2024年02月05日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包