当前位置:首页 > 科技  > 软件

C#中轻松实现二维码和条形码识别:OpenCvSharp和ZXing详细教程

来源: 责编: 时间:2024-06-12 17:32:10 279观看
导读概述:本教程使用OpenCvSharp和ZXing库,详细介绍了在C#中识别二维码和条形码的步骤。通过导入必要的命名空间、加载图像,并使用ZXing库进行二维码和条形码的识别,提供了清晰的示例代码。这方便了开发人员在项目中集成二维

A9u28资讯网——每日最新资讯28at.com

概述:本教程使用OpenCvSharp和ZXing库,详细介绍了在C#中识别二维码和条形码的步骤。通过导入必要的命名空间、加载图像,并使用ZXing库进行二维码和条形码的识别,提供了清晰的示例代码。这方便了开发人员在项目中集成二维码和条形码识别功能。A9u28资讯网——每日最新资讯28at.com

要使用OpenCvSharp来分别识别二维码和条形码,首先需要确保已经安装了OpenCvSharp库。你可以通过以下步骤在C#中使用OpenCvSharp来实现这两种识别。A9u28资讯网——每日最新资讯28at.com

步骤 1:安装 OpenCvSharp

在 Visual Studio 中,通过 NuGet 包管理器安装 OpenCvSharp。右击项目 -> NuGet 包管理器 -> 管理 NuGet 包,搜索 OpenCvSharp 并安装。A9u28资讯网——每日最新资讯28at.com

步骤 2:导入必要的命名空间

在代码文件的开头,导入必要的命名空间。A9u28资讯网——每日最新资讯28at.com

using OpenCvSharp;using OpenCvSharp.Extensions;using ZXing;

步骤 3:加载图像

加载包含二维码或条形码的图像。A9u28资讯网——每日最新资讯28at.com

Mat image = new Mat("path_to_your_image.jpg");

步骤 4:二维码识别

使用 ZXing 库来识别二维码。A9u28资讯网——每日最新资讯28at.com

/// <summary>        /// 只识别二维码        /// </summary>        static void DecodeQRCodes()        {            var img = Cv2.ImRead("2.jpg");            string[] qrCodeTexts = null;            //二维码识别            using (QRCodeDetector qRCodeDetector = new QRCodeDetector())            {                Point2f[] points;                var hasQRCode = qRCodeDetector.DetectMulti(img, out points);                if (hasQRCode)                {                    qRCodeDetector.DecodeMulti(img, points, out qrCodeTexts);                }            }            if (qrCodeTexts != null)            {                Console.WriteLine($"检测到{qrCodeTexts.Length}个二维码:");                for (int i = 0; i < qrCodeTexts.Length; i++)                {                    Console.WriteLine($"第{(i + 1)}个的内容为:{qrCodeTexts[i]}");                }            }        }

步骤 5:条形码识别

使用 ZXing 库来识别条形码。A9u28资讯网——每日最新资讯28at.com

/// <summary>        /// 识别条码(也可以识别二维码)        /// </summary>        static void DecodeBarCodes()        {            // 读取图像            var img = Cv2.ImRead("1.jpg");            BarcodeReader barcodeReader = new BarcodeReader            {                Options = new DecodingOptions                {                    TryHarder = true,                    PossibleFormats = new[]                    {                        BarcodeFormat.CODE_128,                        BarcodeFormat.QR_CODE,//这个是二维码                        BarcodeFormat.EAN_13,                        BarcodeFormat.EAN_8,                        BarcodeFormat.CODE_39,                        BarcodeFormat.CODE_93                    }                },                AutoRotate = true,            };            // 进行条形码解码            var barcodes = barcodeReader.DecodeMultiple(img);            if (barcodes != null)            {                Console.WriteLine($"检测到{barcodes.Length}个条码:");                for (int i = 0; i < barcodes.Length; i++)                {                    Console.WriteLine($"第{(i + 1)}个的内容为:{barcodes[i].Text},格式为:{barcodes[i].BarcodeFormat}");                }            }        }

示例代码

下面是完整的示例代码,其中包括了加载图像、二维码识别和条形码识别的步骤:A9u28资讯网——每日最新资讯28at.com

using System;using OpenCvSharp;using OpenCvSharp.Extensions;using ZXing;class Program{        static void Main()        {            Action action = () =>            {                DecodeQRCodes();            };            Action action2 = () =>            {                DecodeBarCodes();            };            long executionTime_qrcode = action.GetExecutionTimer();            Console.WriteLine();            long executionTime_barcode = action2.GetExecutionTimer();            Console.WriteLine();            Console.WriteLine($"识别二维码用时{executionTime_qrcode}毫秒,条件用时{executionTime_barcode}毫秒");            Console.ReadKey();        }}

运行效果:A9u28资讯网——每日最新资讯28at.com

A9u28资讯网——每日最新资讯28at.com

请注意,示例中的路径 "path_to_your_image.jpg" 应替换为你实际图像文件的路径。此外,确保图像中包含有效的二维码或条形码。A9u28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-93370-0.htmlC#中轻松实现二维码和条形码识别:OpenCvSharp和ZXing详细教程

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 基于 Spring Boot 与 WebSocket 实现实时车位管理与状态更新

下一篇: Next.js 15 来了,全新的编译器、700倍的构建速度提升

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

    1、前言在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还
  • 雅柏威士忌多款单品价格大跌,泥煤顶流也不香了?

    来源 | 烈酒商业观察编 | 肖海林今年以来,威士忌市场开始出现了降温迹象,越来越多不断暴涨的网红威士忌也开始悄然回归市场理性。近日,LVMH集团旗下苏格兰威士忌品牌雅柏(Ardbeg
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起&ldquo;冯提莫&rdquo;这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的&ldquo;斗鱼一姐&rdquo;,冯提莫在游戏直播的年代影响力不输于现
  • 苹果140W USB-C充电器:采用氮化镓技术

    据10 月 30 日 9to5 Mac 消息报道,当苹果推出新的 MacBook Pro 2021 时,该公司还推出了新的 140W USB-C 充电器,附赠在 MacBook Pro 16 英寸机型的盒子里,也支
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
  • 苹果MacBook Pro 2021测试:仍不支持平滑滚动

    据10月30日9to5 Mac 消息报道,苹果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后获得了不错的评价,亮点包括行业领先的性能,令人印象深刻的电池续航,精美丰
Top