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

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

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

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

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

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

步骤 1:安装 OpenCvSharp

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

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

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

using OpenCvSharp;using OpenCvSharp.Extensions;using ZXing;

步骤 3:加载图像

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

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

步骤 4:二维码识别

使用 ZXing 库来识别二维码。FCe28资讯网——每日最新资讯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 库来识别条形码。FCe28资讯网——每日最新资讯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}");                }            }        }

示例代码

下面是完整的示例代码,其中包括了加载图像、二维码识别和条形码识别的步骤:FCe28资讯网——每日最新资讯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();        }}

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz&ldquo;难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?&rdquo;这一番话,出自百合网联合创
  • 小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都有新的进展,其中荣耀、三星都已陆续发布了最新的折叠屏旗舰,尤其号荣耀Magi
  • 8月见!小米MIX Fold 3获得3C认证:支持67W快充

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
  • 苹果140W USB-C充电器:采用氮化镓技术

    据10 月 30 日 9to5 Mac 消息报道,当苹果推出新的 MacBook Pro 2021 时,该公司还推出了新的 140W USB-C 充电器,附赠在 MacBook Pro 16 英寸机型的盒子里,也支
Top