OpenCV4.1.2 QRCode解码体验测评(附源码+支持中文)
目前官方Release的OpenCV最新版本为4.1.2,偶然看到更新信息里面QRCode解码性能有提升,所以迫不及待想尝试一下,因为上次测试了4.0版本的效果不太好。
下载和配置OpenCV的步骤此处略过,网上都可以找到资料,步骤比较简单,大家自己完成即可。接下来作为检测和识别的第一步,我们首先要有QRCode二维码,大家可以网上下载,也可以用下面的python代码生成,后面是我用代码生成的三个二维码用于后续测试。
- from PIL import Image
- import qrcode
- def make_code():
- url = u'OpenCV与AI深度学习'
- qr = qrcode.QRCode(version=5, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=8, border=4)
- qr.add_data(url)
- qr.make(fit=True)
- img = qr.make_image()
- img = img.convert("RGBA")
- icon = Image.open("opencv.png")
- img_w, img_h = img.size
- factor = 4
- size_w = int(img_w / factor)
- size_h = int(img_h / factor)
- icon_w, icon_h = icon.size
- if icon_w > size_w:
- icon_w = size_w
- if icon_h > size_h:
- icon_h = size_h
- icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
- w = int((img_w - icon_w)/2)
- h = int((img_h - icon_h)/2)
- icon = icon.convert("RGBA")
- img.paste(icon, (w, h), icon)
- # img.show()
- img.save('logo-qrcode.png')
- make_code()
- print("Finished!")
接下来新建Win32控制台程序,复制示例代码qrcode.cpp,在opencv安装目录下sources/samples/cpp/qrcode.cpp位置,配置好后运行代码,会打开摄像头,进行实时QRCode二维码的检测和识别,下面是我检测的效果:
需要注意的是默认解码之后如果二维码内容中有中文会显示为乱码,使用下面代码可讲中文正常显示。
- if (result_detection)
- {
- decode_info = qrcode.decode(src, transform, straight_barcode);
- if (!decode_info.empty())
- {
- //cout << decode_info << endl; //原来直接输出std string
- std::wstring wtxt = utf8string2wstring(decode_info); // 将utf-8的string转换为wstring
- std::string txt_gbk = wstring2string(wtxt, "Chinese"); // 再将wstring转换为gbk的string
- std::cout << txt_gbk << endl;
- }
- }
那么你将会看到这样的结果:
最后对OpenCV4.1.2版本QRCode解码功能做个简单总结:
① 二维码检测和识别不论从速度和准确率方面都有了很大提升。
② 支持各种角度和各种颜色QRCode解码
③ 支持中文解码(输出内容转码即可)
④ 同时存在多个二维码时找不到
展望:期待后面能够支持多个二维码解码,同时能支持DataMatrix和其他类型二维码就更好了。
当然,如果有兴趣自己优化的朋友可以编译源码查看优化。
关注【OpenCV与AI深度学习】
长按或者扫描下面二维码即可关注
OpenCV4.1.2 QRCode解码体验测评(附源码+支持中文)的更多相关文章
- OpenWebGlobe-开源三维GIS初体验(附源码和演示)
1.OpenWebGlobe简介 OpenWebGlobe是一个高性能的三维引擎.可应用于可视化仿真,游戏,三维GIS,虚拟现实等领域.它使用纯javascript编写,可以运行在任何支持HTML5. ...
- Django集成Markdown编辑器【附源码】
专注内容写作的你一定不要错过markdown 简单介绍 markdown是一种标记语言,通过简单的标记语法可以使普通的文本内容具有一定的格式,使用非常简单,学习成本极低 目前各大Blog平台都已支持m ...
- Web 开发中很实用的10个效果【附源码下载】
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- 精选9个值得学习的 HTML5 效果【附源码】
这里精选了一组很酷的 HTML5 效果.HTML5 是现 Web 开发领域的热点, 拥有很多让人期待已久的新特性,特别是在移动端,Web 开发人员可以借助 HTML5 强大功能轻松制作各种交互性强.效 ...
- 精选12个时尚的 CSS3 效果【附源码下载】
这里是精选的12个很炫的 CSS3 效果.CSS3 是对 CSS 规范的一个很大的改善和增强,它使得 Web 开发人员可以很容易的在网站中加入时尚的效果.以前很多需要编写复杂的 JavaScript ...
- 8个前沿的 HTML5 & CSS3 效果【附源码下载】
作为一个前沿的 Web 开发者,对于 HTML5 和 CSS3 技术或多或少都有掌握.前几年这些新技术刚萌芽的时候,开发者们已经使用它们来小试牛刀了,如今这些先进技术已经遍地开发,特别是在移动端大显身 ...
- C#编程总结(七)数据加密——附源码
C#编程总结(七)数据加密——附源码 概述 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码]
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码] 开始,我们有了一系列的解决方案,我们将动手搭建新系统吧. 用 ...
- PHP简单的长文章分页教程 附源码
PHP简单的长文章分页教程 附源码.本文将content.txt里的内容分割成3页,这样浏览起来用户体验很好. 根据分页参数ipage,获取对应文章内容 include('page.class.php ...
随机推荐
- Vert.x(vertx) 认证和授权
每个线上系统几乎都是离不开认证和授权的,Vert.x提供了灵活.简单.便捷的认证和授权的支持.Vert.x抽象出了两个核心的认证和授权的接口,一个是 AuthProvider,另一个是User.通过这 ...
- Asp.net core 简单介绍
Asp.net core 是一个开源和跨平台的框架,用于构建如WEB应用,物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序.asp.net core 应用可运行.net和.net ...
- ASP.NET Core+MongoDB(一)
项目类库:.Net Standar 2.0web:ASP.NET CORE 2.2 版本 先上图,看我们的解决方案结构: 分别对上面的工程进行说明:1.KYSharpCore:为公共的基础类,最底层 ...
- Qt高仿Excel表格组件-支持冻结列、冻结行、内容自适应和合并单元格
目录 一.概述 二.效果展示 三.实现思路 1.冻结行.冻结列 2.行高自适应 3.蚂蚁线 四.测试代码 1.添加表格数据 2.设置冻结行.列 3.行高.列宽 4.单元格背景色 5.单元格文字 6.其 ...
- https网站部署成功 CA证书申请 IIS配置
https://www.cnblogs.com/lichunting/p/9274422.html#4276645 参考文档解决方案
- ASP.NET Core使用EPPlus导入导出Excel
开发过程中,经常会遇到导入导出数据的需求,本篇博客介绍在.NET Core中如何使用EPPlus组件导入导出Excel EPPlus: EPPlus是使用Open Office XML格式(xlsx) ...
- 默认展开ztree树形菜单
var setting = { view: { selectedMulti: false //按住ctrl是否可以多选 }, check: { enable: true , chkStyle: 'ch ...
- ORACLE ORION测试IO性能
https://www.oracle.com/technetwork/cn/topics/index-088165-zhs.html 下载地址 Orion是Oracle提供的IO性能测试工具,运行该工 ...
- 编写体面的UI测试
--01-- PageObject简介 PageObject是编写UI测试时的一种模式.简而言之,你可以将所有知道页面细节的部分放入到这个对象上,对于编写测试的人来说,一个PageObject代表 ...
- 通过async实现协程的延迟执行及结果获取
在上一次https://www.cnblogs.com/webor2006/p/12022065.html对于协程的async和wait进行了初步的学习,其可以加速执行的性能,其实对于async它是提 ...