当前位置: 首页 > news >正文

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】)。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • wsl2桥接网络 ubuntu到弃坑到又跳坑
  • Java 多态(难)
  • Python语言基础教程(下)4.0
  • 小程序地图展示poi帖子点击可跳转
  • Go语言设计与实现 学习笔记 第七章 内存管理(1)
  • 基于ACMEv2协议的免费SSL证书申请-支持Let‘s Encrypt/Google/ZeroSSL
  • 图形化编程012(变量-倒计时)
  • 常用工具推荐!分享7款AI论文修改软件工具网站
  • 面试时遇见的项目问题
  • Oracle数据库pl/sql显式抛出异常
  • 富格林:积攒经验阻挠欺诈套路
  • mysql实用系列:日期格式化
  • 火语言RPA流程组件介绍--获取关联元素
  • 大语言模型应用的业务架构点
  • allWebPlugin中间件自定义alert、confirm及prompt使用
  • 0x05 Python数据分析,Anaconda八斩刀
  • ESLint简单操作
  • golang 发送GET和POST示例
  • hadoop集群管理系统搭建规划说明
  • HomeBrew常规使用教程
  • IOS评论框不贴底(ios12新bug)
  • JS学习笔记——闭包
  • miaov-React 最佳入门
  • mysql 数据库四种事务隔离级别
  • Otto开发初探——微服务依赖管理新利器
  • PAT A1092
  • Python打包系统简单入门
  • rabbitmq延迟消息示例
  • React as a UI Runtime(五、列表)
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 电商搜索引擎的架构设计和性能优化
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 前端技术周刊 2019-01-14:客户端存储
  • 悄悄地说一个bug
  • 如何利用MongoDB打造TOP榜小程序
  • 双管齐下,VMware的容器新战略
  • 一、python与pycharm的安装
  • 用mpvue开发微信小程序
  • 回归生活:清理微信公众号
  • ​Java基础复习笔记 第16章:网络编程
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #图像处理
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (1)常见O(n^2)排序算法解析
  • (void) (_x == _y)的作用
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (七)Flink Watermark
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net MVC中使用angularJs刷新页面数据列表