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

这篇具有很好参考价值的文章主要介绍了C#中轻松实现二维码和条形码识别:OpenCvSharp和ZXing详细教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

 

概述:本教程使用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();
        }
}

运行效果:

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

 

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

 

C#中轻松实现二维码和条形码识别:OpenCvSharp和ZXing详细教程文章来源地址https://www.toymoban.com/news/detail-837923.html

到了这里,关于C#中轻松实现二维码和条形码识别:OpenCvSharp和ZXing详细教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • flutter开发实战-flutter二维码条形码扫一扫功能实现

    flutter开发实战-flutter二维码条形码扫一扫功能实现 flutter开发实战-flutter二维码扫一扫功能实现,要使用到摄像头的原生的功能,使用的是插件:scan 效果图如下 1.1 iOS权限设置 1.2 android权限设置 1.3 使用ScanView的widget 扫一扫Widget使用ScanController来做响应的控制 暂停/恢复camera 识

    2024年02月16日
    浏览(45)
  • 【MAUI】条形码,二维码扫描功能

    本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。 移动端的扫描条形码、二维码的功能已经随处可见,已经很难找到一个不支持扫描的App了,但是微软的MAUI竟然没有提供,那么我们应该如何实现呢?

    2024年02月04日
    浏览(43)
  • opencv检测二维码和条形码

    使用excel可以实现制作二维码,但只能实现做英文和数字类型的,步骤如下: 在任意单元格输入内容 选项卡里找到开发工具—插入—点击ActiveX控件的最右下角。 弹出的窗口内,往下滑动选择Microsoft BarCode Control 16.0后,点击确定。 在任意区域,摁住鼠标左键不放,拖动鼠标,

    2024年02月10日
    浏览(55)
  • java生成、识别条形码和二维码

    使用 zxing 开源库 Zxing主要是Google出品的,用于识别一维码和二维码的第三方库 主要类: BitMatrix 位图矩阵 MultiFormatWriter 位图编写器 MatrixToImageWriter 写入图片 可以生成、识别条形码和二维码 内置三种尺寸: enum Size {SMALL, MIDDLE, BIG} 依赖 将宽度不等的多个黑条和白条,按照一定

    2024年02月08日
    浏览(52)
  • opencv实战--角度测量和二维码条形码识别

    首先导入一个带有角度的照片 然后下面的代码注册了一个鼠标按下的回调函数, 还有一个点的数列,鼠标事件为按下的时候就记录点,并画出点,由于点是画在图像上面的,那么就要求了img是需要刷新的所以将他们放在while True里面 当有按键按下的的时候就把图片归为原来的

    2024年02月16日
    浏览(61)
  • Python Opencv实践 - 二维码和条形码识别

            使用pyzbar模块来识别二维码和条形码。ZBar是一个开源软件,用来从图像中读取条形码,支持多种编码,比如EAN-13/UPC-A、UPC-E、EAN-8、代码128、代码39、交错2/5以及二维码。         pyzbar是python封装ZBar的模块,我们用它来做条形码和二维码的识别。         安装方法:

    2024年02月04日
    浏览(46)
  • Python - OpenCV识别条形码、二维码(已封装,拿来即用)

    此代码可识别条形码和二维码,已封装好,拿来即用: 结果:

    2024年02月12日
    浏览(45)
  • openmv和STM32串口通信识别条形码、二维码(HAL库)

    因为自己的毕设用到了条形码识别,所以在这里写一篇关于使用openmv识别条形码和二维码并且与STM32实现串口通讯,希望能帮到以后用到这一模块的同学,STM32方面我使用的是STM32F103RCT6,并且使用HAL进行编写代码。 OpenMV端:由图知UART_RX—P5 ------ UART_TX—P4 2.STM32端:这里我使用

    2023年04月13日
    浏览(49)
  • vue - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

    实现了在vue2、vue3网页项目中,实现调起手机摄像头进行扫描二维码或者条码,可自定义样式。 直接复制组件代码,然后根据你的需求改一下。

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

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

    2023年04月25日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包