EmguCV学习笔记 VB.Net 12.1 二维码解析

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。

教程VB.net版本请访问: EmguCV学习笔记 VB.Net 目录-CSDN博客

教程C#版本请访问: EmguCV学习笔记 C# 目录-CSDN博客

笔者的博客网址:https://blog.csdn.net/uruseibest

教程配套文件及相关说明以及如何获得pdf教程和代码,请移步: EmguCV学习笔记

学习VB.Net知识,请移步: vb.net 教程 目录_vb中如何用datagridview-CSDN博客

学习C#知识,请移步: C# 教程 目录_c#教程目录-CSDN博客

12.1 二维码解析

QRCodeDetector类是Emgu CV库中用于检测和解码二维码的类。

常用方法:

1、Detect方法:检测图像中的QR二维码

Public Function Detect (input As IInputArray, points As IOutputArray) As Boolean

参数说明:

  1. Input:包含二维码的输入图像。
  2. points:存储QR二维码位置信息。这是一个VectorOfPoint对象。

该方法执行成功,将返回二维码四个顶点坐标。

【代码位置:frmChapter12】Button1_Click

'二维码检测

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim qr As New QRCodeDetector()

'需要测试的图像文件

Dim m As New Mat("C:\learnEmgucv\qrcode1.png", ImreadModes.Color)

Dim vp As New VectorOfPoint

'返回二维码四个顶点坐标

If qr.Detect(m, vp) = False Then

Exit Sub

End If

CvInvoke.Line(m, vp(0), vp(1), New MCvScalar(255, 0, 0), 2)

CvInvoke.Line(m, vp(1), vp(2), New MCvScalar(255, 0, 0), 2)

CvInvoke.Line(m, vp(2), vp(3), New MCvScalar(255, 0, 0), 2)

CvInvoke.Line(m, vp(3), vp(0), New MCvScalar(255, 0, 0), 2)

ImageBox1.Image = m

End Sub

输出结果如下图所示:

图12-1 获得二维码坐标位置

2、Decode方法:用于解码获得的QR二维码的内容。

Public Function Decode (image As IInputArray, points As IInputArray, Optional straightQrcode As IOutputArray = Nothing) As String

  1. Image:包含二维码的输入图像。
  2. points:存储QR二维码位置信息。
  3. straightQrcode:经过校正后的二维码图像。

该法方法执行成功,将返回二维码的文字内容。

【代码位置:frmChapter12】Button2_Click

'二维码识别

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

Dim qr As New QRCodeDetector()

'需要测试的图像文件

Dim m As New Mat("C:\learnEmgucv\qrcode2.png", ImreadModes.Color)

Dim vp As New VectorOfPoint

'返回二维码四个顶点坐标

If qr.Detect(m, vp) = False Then

Exit Sub

End If

Dim mout1 As Mat = m.Clone

CvInvoke.Line(mout1, vp(0), vp(1), New MCvScalar(255, 0, 0), 2)

CvInvoke.Line(mout1, vp(1), vp(2), New MCvScalar(255, 0, 0), 2)

CvInvoke.Line(mout1, vp(2), vp(3), New MCvScalar(255, 0, 0), 2)

CvInvoke.Line(mout1, vp(3), vp(0), New MCvScalar(255, 0, 0), 2)

ImageBox1.Image = mout1

Dim strout As String

Dim mout2 As New Mat

strout = qr.Decode(m, vp, mout2)

ImageBox2.Image = mout2

MessageBox.Show(strout)

End Sub

输出结果如下图所示:

图12-2 获得二维码信息

QRCodeDetector类也提供了同时对多个二维码检测和解码的方法,但是经过测试,效果不好。可以使用WeChatQRCode类来代替(请参看12.2节【WeChatQRCode】)。

相关推荐
懷淰メ39 分钟前
【AI加持】基于PyQt+YOLO+DeepSeek的钢材焊接缺陷检测系统(详细介绍)
yolo·目标检测·计算机视觉·pyqt·缺陷检测·deepseek·钢材缺陷
xp_fangfei1 小时前
通过 Marker(视觉标记)获取机器人位姿
opencv·机器人
一碗白开水一1 小时前
【论文解读】VMamba: Visual State Space Model
人工智能·计算机视觉
迪菲赫尔曼2 小时前
从 0 到 1 打造工业级推理控制台:UltraConsole(Ultralytics + FastAPI + React)开源啦!
前端·yolo·react.js·计算机视觉·开源·fastapi
隔壁大炮2 小时前
Day07-RNN层(循环网络层)
人工智能·pytorch·python·rnn·深度学习·神经网络·计算机视觉
njsgcs4 小时前
solidworks自动标注折弯4 无向图 c#
开发语言·c#·solidworks
我是唐青枫4 小时前
C#.NET ThreadLocal 深入解析:线程独享数据、性能收益与实战边界
c#·.net
Lhan.zzZ5 小时前
笔记_2026.4.28_003
c++·笔记·qt·opencv
JQLvopkk6 小时前
C# 工业级上位机:交互实战
开发语言·c#·交互
深度学习lover7 小时前
<数据集>yolo 常见对象检测<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·常见对象检测