首页 > 解决方案 > 在 C# 中使用 USB 网络摄像头自动检测和读取二维码

问题描述

我创建了一个带有 USB 网络摄像头的二维码阅读器。

我可以读取 QR 码按捕获按钮。我需要在检测到二维码时自动执行此操作。

我需要像这样创建我的应用程序。 Android Studio 教程 - 用相机扫描二维码

这是我的代码

using System;
using System.Drawing;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
using WebCam_Capture;
using MessagingToolkit.QRCode.Codec;
using MessagingToolkit.QRCode.Codec.Data;

namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private WebCamCapture _myWebcam;

        private WebCamCapture MyWebcam
        {
            [MethodImpl(MethodImplOptions.Synchronized)]
            get
            {
                return _myWebcam;
            }

            [MethodImpl(MethodImplOptions.Synchronized)]
            set
            {
                if (_myWebcam != null)
                {
                    _myWebcam.ImageCaptured -= MyWebcam_ImageCaptured;
                }

                _myWebcam = value;
                if (_myWebcam != null)
                {
                    _myWebcam.ImageCaptured += MyWebcam_ImageCaptured;
                }
            }
        }

        private QRCodeDecoder _reader;

        private void MyWebcam_ImageCaptured(object source, WebcamEventArgs e)
        {
            PictureBox1.Image = e.WebCamImage;
        }

        private void StartWebcam()
        {
            try
            {
                StopWebcam();
                MyWebcam = new WebCamCapture();
                MyWebcam.Start(0);
            }
            catch (Exception ex)
            {
            }
        }

        private void StopWebcam()
        {
            try
            {
                MyWebcam.Stop();
                MyWebcam.Dispose();
            }
            catch (Exception ex)
            {
            }
        }

        private void Capture()
        {
            try
            {
                _reader = new QRCodeDecoder();
                TextBox1.Text = _reader.Decode(new QRCodeBitmapImage(PictureBox1.Image as Bitmap));
                MessageBox.Show(@"QR code is detected!");

            }
            catch (Exception ex)
            {
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            StartWebcam();
            TextBox1.Clear();
        }

        private void btn_capture_Click(object sender, EventArgs e)
        {
            Capture();
        }
    }
}

标签: c#.net

解决方案


您可以使用Unity,他们为初学者提供免费版本并支持 C#。对于二维码/摄像头部分,您可以在他们的 Asset Store 或Github上进行搜索


推荐阅读