OpenCV 微信QRCode二维码
转自: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二维码相关推荐
- 用qrcode生成微信支付二维码
项目场景: 用qrcode生成微信支付二维码 问题描述 根据后台返回的路径动态生成微信二维码 在这里我们用的是qrcodejs2,它有官网文档 npm i qrcodejs2 导入: import Q ...
- QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式...
QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生成带 Logo 二维码.支持微博微信 QQ 二维码扫描样式 参考链接:https://github.com/bingoogolapple/B ...
- opencv调用微信的二维码识别引擎
导读 用过二维码识别的小伙伴们都知道,微信的二维码识别确实要比开源的二维码识别zxing和zbar要强不少,zxing和zbar对小的二维码以及模糊的二维码基本上是识别不出来的,有时候一张包含二维码的 ...
- 微信推广二维码接口使用总结
前一段时间小编的公司接手了一个微信分销的项目,该项目中有一个推广二维码的功能:分销商可以生成自己的二维码,当其他用户首次扫描的时候会自动成为该分销商的下级.这个过程中最主要的就是利用微信的生成二维码接 ...
- 微信扫描二维码快速登录网站
在近期的一个项目中用到了微信扫描注册.登录网站功能所以整理了下希望对读者有帮助. 首先,你需要有一个没有绑定微信.微信公众平台的邮箱注册成为微信开放平台开发者,在管理中心创建移动应用.或者网站应用获得 ...
- 前端怎么从H5调起微信扫描二维码?小程序使用扫码功能.
小程序如何使用扫码的功能呢? wx.scanCode(Object object) 参数 属性 类型 默认值 必填 说明 最低版本 onlyFromCamera boolean false 否 是否只 ...
- 微信开发 -- 二维码生成
微信开发 – 二维码生成 生成二维码无非就是将一段字符串内容以某种特定的方式进行编码, 最终得到一个图片. 这里使用 C# 生成二维码我用到了 QrCode.Net 这个 Nuget 包. 这里我们创 ...
- 根据url地址生成二维码,微信扫描二维码可直接打开网址
需求:根据url地址生成二维码,微信扫描二维码可直接打开网址 html代码: <input id="text" type="text" value=&qu ...
- uniapp实现微信扫二维码进行核销
效果图: 1.生成二维码 我这里用的是uniapp插件市场里的qrcode插件 先引入插件: import UQRCode from '../../uni_modules/Sansnn-uQRCode ...
最新文章
- Python工具 | 9个用来爬取网络站点的 Python 库
- Nginx 完整安装篇
- php 打印行数,php/html-按行和列配置钻石数量的打印格式
- linux r后台执行,screen 命令简单用法 Linux后台执行 就用它
- j2ee 上传下载 小记
- Flask初级(十)flash与前台交互post详解
- dts无法识别excel中的数字值?
- FFmpeg的H.264解码器源代码简单分析:环路滤波(Loop Filter)部分
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_7_Stream流中的常用方法_limit...
- jquery 获取节点各种方法
- 百度支持nofollow是百度的进步
- Go基础编程:工作区
- 黑白群晖 进阶篇 不得不注意的情况
- 结对编程四则运算第三周-挑战出题(20172301、20172304、20172328)
- ROMS 编译upwelling.h
- npm --save-dev 和 --save的区别
- 压力传感器的种类与工作原理
- 用Python实现微信公众号WCI指数计算器
- 21级蓝桥选拔赛(1)
- 办公软件不能打印能打印测试页,excel2010无法打印的解决方法