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

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

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

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

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

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

步骤 1:安装 OpenCvSharp

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

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

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

using OpenCvSharp;using OpenCvSharp.Extensions;using ZXing;

步骤 3:加载图像

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

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

步骤 4:二维码识别

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

示例代码

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 帅气纯真少年!日本最帅初中生选美冠军出炉

    日本第一帅哥初一生选美大赛冠军现已正式出炉,冠军是来自千叶县的宗田悠良。日本一直热衷于各种选美大赛,从&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
  • 微博大门常打开,迎接海外画师漂洋东渡

    作者:互联网那些事&ldquo;起猛了,我能看得懂日语了&rdquo;。&ldquo;为什么日本人说话我能听懂?&rdquo;&ldquo;中文不像中文,日语不像日语,但是我竟然看懂了&rdquo;&hellip;&hell
  • 7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • 机构称Q2全球智能手机出货量同比下滑11% 苹果份额依旧第2

    7月20日消息,据外媒报道,研究机构的报告显示,由于需求下滑,今年二季度全球智能手机的出货量,同比下滑了11%,三星、苹果等主要厂商的销量,较去年同期均有下
  • 荣耀Magic4 至臻版 首创智慧隐私通话 强劲影音系统

    2022年第一季度临近尾声,在该季度内,许多品牌陆续发布自己的最新产品,让大家从全新的角度来了解当今的手机技术。手机是电子设备中,更新迭代十分迅速的一款产品,基
Top