首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >太神奇了!使用C#实现自动核验健康码:(1)二维码识别

太神奇了!使用C#实现自动核验健康码:(1)二维码识别

作者头像
zls365
发布于 2021-09-02 07:42:49
发布于 2021-09-02 07:42:49
2.7K0
举报
文章被收录于专栏:CSharp编程大全CSharp编程大全

前言

因为疫情的原因,无论是进入商场还是医院、车站,都需要出示健康码。

现在基本都是采取人工方式核验健康码,看到绿码就通过,否则就禁止进入。

但是,单靠人工核验健康码容易造成人员拥堵,增加病毒交叉感染的风险,其实完全可以使用计算机来实现自动核验

原理

如图所示,健康码其实就是个二维码,里面存储了健康码相关信息。

因此,只需通过摄像头扫描手机界面,识别出手机上的二维码即可。

实现

创建一个WinForm程序,添加下列控件:

  • button 开启摄像头
  • pictureBox 显示摄像头图像
  • time 定时识别摄像头图像,频率设为100
  • label 显示健康码状态

1. 开启摄像头

添加nuget包AForge.Video.DirectShow,设置button的Click事件:

代码语言:javascript
AI代码解释
复制
VideoCaptureDevice _camera;
private void button1_Click(object sender, EventArgs e)
{
    _camera = new VideoCaptureDevice(new FilterInfoCollection(FilterCategory.VideoInputDevice)[0].MonikerString);
    _camera.NewFrame += camera_NewFrame;
    _camera.Start();
    timer1.Enabled = true;
}

private void camera_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
{
    //将摄像头每帧图像显示到pictureBox
    pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();       
}

2. 识别二维码

引用nuget包ZXing.Net,在timer的Tick事件中识别二维码:

代码语言:javascript
AI代码解释
复制
private void timer1_Tick(object sender, EventArgs e)
{
    if (pictureBox1.Image != null)
    {
        var img = (Bitmap)pictureBox1.Image.Clone();
        var barcodeReader = new BarcodeReader();
        var result = barcodeReader.Decode(img);
        if (result != null)
        {
            var healthCode = JsonConvert.DeserializeAnonymousType(result.Text,
                 new { Color = "" });
            if (healthCode != null)
            {
                var color = healthCode.Color;
                if (color == "green")
                {
                    label1.Text = "绿码";
                    label1.ForeColor = Color.Green;
                }
                else if (color == "red")
                {
                    label1.Text = "红码";
                    label1.ForeColor = Color.Red;
                }
                else if (color == "yellow")
                {
                    label1.Text = "黄码";
                    label1.ForeColor = Color.Yellow;
                }
                else
                {
                    label1.Text = "异常";
                }
            }
        }
    }
}

健康码的内容是一个json字符串,其中Color属性代表健康码状态。

3. 运行效果

运行程序,点击“开启摄像头”,可以正常识别:

结论

健康码的内容不包含时间,因此下一步还需要把更新时间从图片中识别出来,保证是最新的健康码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[C#]OpenCvSharp利用微信二维码引擎实现二维码识别
介绍 微信开源了其二维码的解码功能,并贡献给 OpenCV 社区。其开源的 wechat_qrcode 项目被收录到 OpenCV contrib 项目中。从 OpenCV 4.5.2 版本开始,就可以直接使用。 该项目 github 地址:
云未归来
2025/07/20
4030
[C#]OpenCvSharp利用微信二维码引擎实现二维码识别
c# 利用AForge.NET组件操作摄像头
private FilterInfoCollection videoDevices;
用户5640963
2019/07/26
1.7K0
[C#]使用OpenCvSharp实现二维码图像增强超分辨率
借助于opencv自带sr.prototxt和sr.caffemodel实现对二维码图像增强 【效果展示】
云未归来
2025/07/17
2430
[C#]使用OpenCvSharp实现二维码图像增强超分辨率
C# 使用QRCoder生成二维码
最近瞎琢磨的一些小东西,也算是一个比较完整的二维码生成了,上手也很快,可自行扩展。 现在生成二维码有多种方式,我使用的是QRCoder。
郑子铭
2024/04/15
8670
C# 使用QRCoder生成二维码
使用zxing类生成一维码、二维码实例
条形码在生活中使用的已经相当广泛了,不管是去书店买书,还是去超市买商品,都会用到条码,而且每一个条码中的信息都不尽相同,每一类的商品都有统一的条 码,当然条码的类型也有不同,比如有标准的UPC条码,也有Code39,Code128,EAN8等等好多好多。这些根据不同的需要而被广泛使用。
用户7999227
2021/09/22
1.2K0
C#验证码的实现_验证码怎么实现
实例化Random: Random p = new Random();//表示伪随机数生成器
全栈程序员站长
2022/09/30
1.2K0
C#验证码的实现_验证码怎么实现
二维码的生成<一>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bering
2019/12/03
1.1K0
[C#]C#利用Emgu.CV4.8.0实现条码检测识别
调用Emgu.CV4.8.0自带BarcodeDetector的接口进行调用 【效果展示】
云未归来
2025/07/17
1440
[C#]C#利用Emgu.CV4.8.0实现条码检测识别
二维码识别(C#)
https://www.npmjs.com/package/qrcode#usage
码客说
2022/09/21
2.8K0
二维码识别(C#)
C#使用轻量级深度学习模型进行车牌颜色识别和车牌号识别
看到这个文章时候请注意这个不涉及到车牌检测,这个仅仅是车牌颜色和车牌号识别,如果想涉及到车牌检测可以参考这个博客:[C#]winform部署yolov7+CRNN实现车牌颜色识别车牌号检测识别_c# yolo 车牌识别-CSDN博客
云未归来
2025/07/21
1330
C#使用轻量级深度学习模型进行车牌颜色识别和车牌号识别
H5混合开发二维码扫描以及调用本地摄像头
今天主管给了我个需求,说要用混合开发,用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的,其中还弄了个闪光灯.但是纯H5的没接触过,心里没底,于是晚上回家开始网上各处找方案.以下是我对于H5扫描二维码以及调用本地摄像头的理解以及代码. 科普网址: H5如何生成安卓组件对象 H5调用安卓本地摄像头api 在线二维码图片生成器 二维码扫描:(使用的是mui的框架,下面是html代码) <!doctype html> <html> <hea
编程软文
2018/06/20
8.2K1
Canvas 进阶(一)二维码的生成与扫码识别
因此,打算写一系列关于 canvas 的文章,探索学习提升自己的同时顺便分享给大家。
小皮咖
2019/11/05
3.1K0
C#*.bmp,*.jpg,*.png指定颜色,转换为透明背景的png[通俗易懂]
partial class Form1 { /// /// private System.ComponentModel.IContainer components = null;
全栈程序员站长
2022/09/13
4.7K0
C#*.bmp,*.jpg,*.png指定颜色,转换为透明背景的png[通俗易懂]
一边吃瓜看球,一边完成AI应用实践——手写体识别入门
作者 | 邹欣 编辑 | 姗姗 【人工智能头条导读】又是一个很有热度的周末,除了炎热的天气,还有火热的世界杯。今天人工智能头条为大家准备的技术干货,让大家可以在空调下,吃瓜看球两不耽误就可以轻松完成AI应用实践入门。多少次,在我们查找很多资源、技术指导后,实操时还是会被一个报错而终止了前进的道路。小编也曾经历过这样的心路历程,所以一份好的指南对于刚开始实践操作的同学来说简直太有爱了,不仅节约了很多时间,操作和思路也都是清晰的。如果你是刚入门的AI小白,想通过一些简单的应用实践对AI应用有更深入的了解,现在就
用户1737318
2018/07/20
1.2K0
[C#]使用winform部署ddddocr的onnx模型进行验证码识别文字识别文字检测
ddddocr是一个强大的Python OCR(光学字符识别)库,特别适用于验证码识别。它利用深度学习技术,如卷积神经网络(CNN)和循环神经网络(RNN),对图像中的文字进行高效准确的识别。虽然ddddocr本身是一个Python库,但你可以通过一些方法将其功能集成到Winform应用程序中,以进行验证码识别、文字识别和文字检测。
云未归来
2025/07/22
3430
[C#]使用winform部署ddddocr的onnx模型进行验证码识别文字识别文字检测
[C#]winform基于attentive_derain_net深度学习算法进行图像去雨部署实现
https://github.com/MaybeShewill-CV/attentive-gan-derainnet
云未归来
2025/07/21
1000
[C#]winform基于attentive_derain_net深度学习算法进行图像去雨部署实现
OpenHarmony应用实现二维码扫码识别
二维码的应用场景非常广泛,在购物应用中,消费者可以直接扫描商品二维码,浏览并购买产品,如图是购物应用的扫描二维码的页面。
小帅聊鸿蒙
2025/05/06
4550
OpenHarmony应用实现二维码扫码识别
C#生成二维码方法的类库QRCoder
二维码很多地方都有使用到。如果是静态的二维码还是比较好处理的,通过在线工具就可以直接生成一张二维码图片,比如:草料二维码。
郑子铭
2023/11/06
1K0
C#生成二维码方法的类库QRCoder
React Native 实现二维码扫描
最近刚好在学习 React Native 想搞个扫描条形码,二维码的小应用,因为涉及硬件接口,而且自己本身并没有原生开发背景,踩了几个坑,记录一下。 扫描二维码 首先当然是 google 一下看看是否有现成的 React Native 库支持二维码,感谢最大的同性交友网站 GitHub,还真有两个:react-native-camera 和 react-native-barcodescanner 。 不过,各自都有一点问题,react-native-camera 主要是用来调用摄像头的,Android
Bob.Chen
2018/05/02
4K0
React Native 实现二维码扫描
C# 生成chart图表的三种方式
在.net中,微软给我们提供了画图类(system.drawing.imaging),在该类中画图的基本功能都有。比如:直线、折线、矩形、多边形、椭圆形、扇形、曲线等等,因此一般的图形都可以直接通过代码画出来。接下来介绍一些画图函数: Bitmap bmap=new Bitmap(500,500) /定义图像大小; bmap.Save(stream,imagecodecinfo) /将图像保存到指定的输出流; Graphics gph /定义或创建gdi绘图对像; PointF cpt /定义二维平面中x,y坐标; DrawString(string,font,brush,ponitf) /用指定的brush和font对像在指定的矩形或点绘制指定的字符串; DrawLine(pen,ponit,ponit) /用指定的笔(pen)对像绘制指定两点之间直线; DrawPolygon(pen,ponit[]) /用指定的笔(pen)对像绘制指定多边形,比如三角形,四边形等等; FillPolygon(brush,ponit[]) /用指定的刷子(brush)对像填充指定的多边形; DrawEllipse(pen,x,y,width,height) /用指定的笔绘制一个边框定义的椭圆; FillEllipse(brush,x,y,width,height) /用指定的刷子填充一个边框定义的椭圆; DrawRectangle(pen,x,y,width,height) /用指定的笔绘制一个指定坐标点、宽度、高度的矩形; DrawPie(pen,x,y,width,height,startangle,sweepangle) /用指定的笔绘制一个指定坐标点、宽度、高度以及两条射线组成的扇形;
zls365
2020/10/10
4.5K0
C# 生成chart图表的三种方式
推荐阅读
相关推荐
[C#]OpenCvSharp利用微信二维码引擎实现二维码识别
更多 >
LV.0
这个人很懒,什么都没有留下~
作者相关精选
交个朋友
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入北京开发者交友群
结识首都开发者 拓展技术人脉
加入前端工作实战群
前端工程化实践 组件库开发经验分享
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
首页
学习
活动
专区
圈层
工具
MCP广场
首页
学习
活动
专区
圈层
工具
MCP广场