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

开发 后端
要使用OpenCvSharp来分别识别二维码和条形码,首先需要确保已经安装了OpenCvSharp库。你可以通过以下步骤在C#中使用OpenCvSharp来实现这两种识别。

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

要使用OpenCvSharp来分别识别二维码和条形码,首先需要确保已经安装了OpenCvSharp库。你可以通过以下步骤在C#中使用OpenCvSharp来实现这两种识别。

步骤 1:安装 OpenCvSharp

在 Visual Studio 中,通过 NuGet 包管理器安装 OpenCvSharp。右击项目 -> NuGet 包管理器 -> 管理 NuGet 包,搜索 OpenCvSharp 并安装。

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

在代码文件的开头,导入必要的命名空间。

using OpenCvSharp;
using OpenCvSharp.Extensions;
using ZXing;

步骤 3:加载图像

加载包含二维码或条形码的图像。

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

步骤 4:二维码识别

使用 ZXing 库来识别二维码。

/// <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 库来识别条形码。

/// <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}");
                }
            }
        }

示例代码

下面是完整的示例代码,其中包括了加载图像、二维码识别和条形码识别的步骤:

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();
        }
}

运行效果:

请注意,示例中的路径 "path_to_your_image.jpg" 应替换为你实际图像文件的路径。此外,确保图像中包含有效的二维码或条形码。

责任编辑:姜华 来源: 今日头条
相关推荐

2015-10-28 13:33:50

二维码条形码扫描源码

2016-03-09 10:03:25

RFID技术条形码二维码

2023-11-17 15:44:06

C++库生成二维码

2021-02-08 08:40:00

Zint二维码开源

2023-11-17 09:07:51

.NET生成二维码识别二维码

2023-08-08 14:16:07

二维码开发鸿蒙

2024-06-26 08:46:45

2022-06-07 08:00:00

JavaScript编程语言TSPL

2013-10-29 09:46:05

二维码

2013-01-30 12:16:49

二维码NFC近场通讯

2011-07-07 16:53:56

iOS 条形码扫描

2020-12-30 10:55:01

代码Java二维码

2011-12-14 16:28:42

灵动快拍二维码QR码

2023-08-15 19:24:37

Python条形码

2024-01-11 12:01:13

Python编程语言OpenCV

2017-02-21 09:17:46

二维码漏洞

2011-12-06 16:40:45

二维码快拍二维码灵动快拍

2014-03-05 14:41:55

二维码登录

2012-04-01 09:53:13

二维码

2023-12-25 14:53:36

点赞
收藏

51CTO技术栈公众号