.Net AI学习笔记系列
第六章 OpenCVSharp实操——识别二维码
前言
本文主要介绍使用OpenCVSharp中的 QRCodeDetector对象,用来检测和解码二维码。
一、OpenCVSharp实操——识别二维码
示例展示了一步一步识别一张二维码图片。
二、步骤
1.开发工具
VS2019+.net 4.8+OpenCvSharp4
2.引入库
Install-Package OpenCvSharp4
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;
using OpenCvSharp.Extensions;
3.示例代码
代码如下(示例):
从PictureBox控件中获取二维码图像,并将其转换为Bitmap对象。
Bitmap QrCodeImg = (Bitmap)this.pictureBox1.Image;
将Bitmap对象转换为OpenCvSharp中的Mat对象。
Mat img = BitmapConverter.ToMat(QrCodeImg);
创建一个QRCodeDetector对象,用于检测和解码二维码。
var detector = new QRCodeDetector();
使用DetectAndDecode方法检测二维码并解码其内容。同时,该方法还会返回二维码的四个角点坐标。
Point2f[] points = null;
string data = detector.DetectAndDecode(img, out points);
将解码后的数据显示在文本框txt_Result中。
this.txt_Result.Text = data;
如果检测到二维码,将二维码的四个角点绘制为绿色圆圈,并将修改后的图像显示在PictureBox控件中。
if (points != null)
{
foreach(var point in points)
{
Cv2.Circle(img, (int)point.X ,(int)point.Y , 10, Scalar.Green ,1);
}
Bitmap newImg = BitmapConverter.ToBitmap(img);
this.pictureBox1.Image = newImg;
this.pictureBox1.Refresh();
}
else
{
this.txt_Result.Text = "无效二维码";
}
4.运行效果
总结
这段代码使用OpenCvSharp库实现了从图片中检测和识别二维码的功能,并将识别结果显示在文本框中,同时用绿色圆圈标出二维码的四个角点。