转自:OpenCV4.5.1新增微信QRCode解码功能使用步骤与测评 附源码和效果视频_Color Space的博客-CSDN博客

导读:

微信开源了QRCode解码功能,并可以在OpenCV中使用,本期将介绍使用步骤和效果演示。

使用步骤:

WeChatQRCode模块为OpenCV4.5.1新增功能,需要在github下载最新opencv源码master和contrib部分编译后使用。

源码编译使用CMake,相关编译教程很多博客写的很详细,这里只做关键步骤说明:

(1) 编译是勾选BUILD_opencv_wechat_qrcode选项(默认勾选)

(2) 勾选BUILD_opencv_world 这样只生成一个dll方便使用

(3) 先Configure,后Generate,直至不报错(警告可忽略)

(4) 打开OpenCV.Sln,先生成ALLBuild,再仅用于项目生成Install,生成成功(无错误,无失败)会得到如下文件:

在include/opencv2文件夹下会多一个wechat_qrcode.hpp

bin文件夹下只生成opencv_world451.dll


接下来就是配置步骤:包含目录、库目录、附加依赖项和环境变量,这个大家用这么久OpenCV应该都会了,这里跳过。

最后上代码:


#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/wechat_qrcode.hpp>using namespace std;
using namespace cv;int main()
{//加载图片解码Ptr<wechat_qrcode::WeChatQRCode> detector;string detect_prototxt = "./model/detect.prototxt";string detect_caffe_model = "./model/detect.caffemodel";string sr_prototxt = "./model/sr.prototxt";string sr_caffe_model = "./model/sr.caffemodel";Mat img = imread("./QR/T33/result.bmp");try {detector = makePtr<wechat_qrcode::WeChatQRCode>(detect_prototxt, detect_caffe_model,sr_prototxt, sr_caffe_model);}catch (const std::exception& e) {cout <<"\n---------------------------------------------------------------\n""Failed to initialize WeChatQRCode.\n""Please, download 'detector.*' and 'sr.*' from\n""https://github.com/WeChatCV/opencv_3rdparty/tree/wechat_qrcode\n""and put them into the current directory.\n""---------------------------------------------------------------\n";cout << e.what() << endl;return 0;}vector<Mat> vPoints;vector<String> strDecoded;strDecoded = detector->detectAndDecode(img, vPoints);for (int i = 0; i < strDecoded.size(); i++){cout << "decode-" << i+1 << ": " << strDecoded[i] << endl;Point pt1 = Point((int)vPoints[i].at<float>(0, 0), (int)vPoints[i].at<float>(0, 1));Point pt2 = Point((int)vPoints[i].at<float>(1, 0), (int)vPoints[i].at<float>(1, 1));Point pt3 = Point((int)vPoints[i].at<float>(2, 0), (int)vPoints[i].at<float>(2, 1));Point pt4 = Point((int)vPoints[i].at<float>(3, 0), (int)vPoints[i].at<float>(3, 1));line(img, pt1, pt2, Scalar(0, 255, 0), 2);line(img, pt2, pt3, Scalar(0, 255, 0), 2);line(img, pt3, pt4, Scalar(0, 255, 0), 2);line(img, pt4, pt1, Scalar(0, 255, 0), 2);putText(img, strDecoded[i], pt1, 0, 0.5, Scalar(255, 0, 0), 2);}imshow("wechat_qrcode", img);waitKey();imwrite("result.png", img);

核心函数strDecoded = detector->detectAndDecode(img, vPoints);可以得到QRCode位置和解码内容,使用到的模型下载地址如下:      https://github.com/WeChatCV/opencv_3rdparty

加载两张图像测试效果:

OpenCV 微信QRCode二维码相关推荐

  1. 用qrcode生成微信支付二维码

    项目场景: 用qrcode生成微信支付二维码 问题描述 根据后台返回的路径动态生成微信二维码 在这里我们用的是qrcodejs2,它有官网文档 npm i qrcodejs2 导入: import Q ...

  2. QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式...

    QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生成带 Logo 二维码.支持微博微信 QQ 二维码扫描样式 参考链接:https://github.com/bingoogolapple/B ...

  3. opencv调用微信的二维码识别引擎

    导读 用过二维码识别的小伙伴们都知道,微信的二维码识别确实要比开源的二维码识别zxing和zbar要强不少,zxing和zbar对小的二维码以及模糊的二维码基本上是识别不出来的,有时候一张包含二维码的 ...

  4. 微信推广二维码接口使用总结

    前一段时间小编的公司接手了一个微信分销的项目,该项目中有一个推广二维码的功能:分销商可以生成自己的二维码,当其他用户首次扫描的时候会自动成为该分销商的下级.这个过程中最主要的就是利用微信的生成二维码接 ...

  5. 微信扫描二维码快速登录网站

    在近期的一个项目中用到了微信扫描注册.登录网站功能所以整理了下希望对读者有帮助. 首先,你需要有一个没有绑定微信.微信公众平台的邮箱注册成为微信开放平台开发者,在管理中心创建移动应用.或者网站应用获得 ...

  6. 前端怎么从H5调起微信扫描二维码?小程序使用扫码功能.

    小程序如何使用扫码的功能呢? wx.scanCode(Object object) 参数 属性 类型 默认值 必填 说明 最低版本 onlyFromCamera boolean false 否 是否只 ...

  7. 微信开发 -- 二维码生成

    微信开发 – 二维码生成 生成二维码无非就是将一段字符串内容以某种特定的方式进行编码, 最终得到一个图片. 这里使用 C# 生成二维码我用到了 QrCode.Net 这个 Nuget 包. 这里我们创 ...

  8. 根据url地址生成二维码,微信扫描二维码可直接打开网址

    需求:根据url地址生成二维码,微信扫描二维码可直接打开网址 html代码: <input id="text" type="text" value=&qu ...

  9. uniapp实现微信扫二维码进行核销

    效果图: 1.生成二维码 我这里用的是uniapp插件市场里的qrcode插件 先引入插件: import UQRCode from '../../uni_modules/Sansnn-uQRCode ...

最新文章

  1. Python工具 | 9个用来爬取网络站点的 Python 库
  2. Nginx 完整安装篇
  3. php 打印行数,php/html-按行和列配置钻石数量的打印格式
  4. linux r后台执行,screen 命令简单用法 Linux后台执行 就用它
  5. j2ee 上传下载 小记
  6. Flask初级(十)flash与前台交互post详解
  7. dts无法识别excel中的数字值?
  8. FFmpeg的H.264解码器源代码简单分析:环路滤波(Loop Filter)部分
  9. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_7_Stream流中的常用方法_limit...
  10. jquery 获取节点各种方法
  11. 百度支持nofollow是百度的进步
  12. Go基础编程:工作区
  13. 黑白群晖 进阶篇 不得不注意的情况
  14. 结对编程四则运算第三周-挑战出题(20172301、20172304、20172328)
  15. ROMS 编译upwelling.h
  16. npm --save-dev 和 --save的区别
  17. 压力传感器的种类与工作原理
  18. 用Python实现微信公众号WCI指数计算器
  19. 21级蓝桥选拔赛(1)
  20. 办公软件不能打印能打印测试页,excel2010无法打印的解决方法

热门文章

  1. 1000句英语经典口语(6)
  2. 计算机科学留学硕士工资,揭晓美国大学研究生毕业起薪TOP50排行榜单 你选对了吗?...
  3. 各种标点符号的英文怎么念
  4. 三三速记英语 需要者看
  5. 天刀 服务器状态,天刀实用技巧_天刀各种游戏小技巧_玩游戏网
  6. 这个屡获大奖的Firefox浏览器又推出新版本啦,完全免费
  7. Unity引擎UI模块知识Tree
  8. 通过Js将ECharts导出为图片
  9. 高数_第6章无穷级数
  10. 腾讯云/阿里云域名注册解析备案