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

导读

用过二维码识别的小伙伴们都知道,微信的二维码识别确实要比开源的二维码识别zxingzbar要强不少,zxing和zbar对小的二维码以及模糊的二维码基本上是识别不出来的,有时候一张包含二维码的图片可能你缩放一下就可能导致识别不出来,而微信的二维码识别不仅可以远距离识别还可以识别各个拍照角度以及模糊的二维码

腾讯的WeChatCV团队最近开源了微信的二维码识别模型,并将这个功能添加到了opencv_contrib中,只需要简单的三行代码即可完成调用,这篇文章就来教大家如何使用

微信的二维码识别引擎解析

微信的二维码识别能力如此强劲,主要依赖两个模块,二维码检测二维码增强

  • 二维码检测
    在这里插入图片描述

随着深度学习的发展,以及移动端设备性能的提升,给深度学习的应用提供了更好的平台。微信的二维码检测基于SSD目标检测框架来实现的,以便支持小的二维码检测、模糊的二维码检测。

  • 二维码增强
    在这里插入图片描述
    二维码增强是依赖于图像超分辨率实现,将小的和模糊的二维码处理成清晰的二维码,以便于后面更好地识别二维码。

微信二维码识别引擎的使用

WeChatCV团队已经将开源的二维码识别功能嵌入到opencv_contrib中,目前opencv官方提供的release版本还没有嵌入微信二维码识别功能,所以大家需要将自己重新编译OpenCV,我有编译好的基于Windows的库,有需要的可以私信我。

opencv git地址:https://github.com/opencv/opencv

  • OpenCV的编译

git上提供了比较详细的编译介绍,大家可以参考上面的步骤自己进行编译,Windows需要借助于cmakevs或者mingw64来进行编译,详细步骤可以百度,不过需要注意的时候,在添加opencv_contrib时不要勾选OPENCV_ENABLE_NONFREE否则后面可能会出现编译错误的问题。

编译opencv的时候可以勾选BUILD_OPENCV_world这样编译出来的库就只会有一个opencv_world451.lib,如果你不需要集成,就不用去勾选它默认是不勾选的。

注意:这个编译只是编译了c++版本的库,如果你想编译Python版本的,需要改opencv-python的代码。

  • 环境配置

编译好opencv之后,打开vs,新建一个c++项目,然后配置好OpenCV的环境即可。

  • 测试代码
#include <iostream>
#include <string>
#include<opencv2/core/core.hpp>
#include<opencv2/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/wechat_qrcode.hpp>using namespace cv;
using namespace std;int main()
{const std::string detector_prototxt_path = "D:\\opencv\\source_code\\build_vs2019_world\\downloads\\wechat_qrcode\\detect.prototxt";const std::string detector_caffe_model_path = "D:\\opencv\\source_code\\build_vs2019_world\\downloads\\wechat_qrcode\\detect.caffemodel";const std::string super_resolution_prototxt_path = "D:\\opencv\\source_code\\build_vs2019_world\\downloads\\wechat_qrcode\\sr.prototxt";const std::string super_resolution_caffe_model_path = "D:\\opencv\\source_code\\build_vs2019_world\\downloads\\wechat_qrcode\\sr.caffemodel";wechat_qrcode::WeChatQRCode weChatQR;weChatQR = wechat_qrcode::WeChatQRCode(detector_prototxt_path,detector_caffe_model_path,super_resolution_prototxt_path,super_resolution_caffe_model_path);Mat img;img = imread("../imgs/code.png");if (!img.empty()) {vector<Mat> qrcode_box;vector<std::string> recon_res = weChatQR.detectAndDecode(img, qrcode_box);for (int i = 0; i < recon_res.size(); i++) {int min_x = (int)qrcode_box[i].at<float>(0);int min_y = (int)qrcode_box[i].at<float>(1);int max_x = (int)qrcode_box[i].at<float>(4);int max_y = (int)qrcode_box[i].at<float>(5);cv::Rect box = cv::Rect(min_x, min_y, max_x - min_x, max_y - min_y);cv::rectangle(img, box, cv::Scalar(0, 255, 0), 2);cv::putText(img,recon_res[i],cv::Point(min_x,min_y-10), cv::FONT_HERSHEY_COMPLEX,1, cv::Scalar(0,0,255),2,2);}cv::imshow("draw_qrcode", img);cv::waitKey(0);}}

在这里插入图片描述

资源下载:我已经上传到CSDN上面,大家可以去CSDN资源下载

模型文件下载地址:https://github.com/WeChatCV/opencv_3rdparty

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/72562.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信扫码登陆(1)---扫码登录流程讲解、获取授权登陆二维码

扫码登录流程讲解、获取授权登陆二维码 具体流程可以看微信官网的扫码登录文档 地址&#xff1a;准备工作 | 微信开放文档 其实官方文档已经讲的非常清楚而且讲的也很明白。 一、扫码登录流程讲解 1、首先准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAut…

生成微信二维码,微信扫码登录网站

注意 微信扫码登录&#xff0c;有两种实现方式&#xff1a; 方式1、依赖公司在【微信开放平台】用【公司营业执照】注册的账号&#xff0c;才能实现扫码登录 方式2、借助个人或者公司的微信公众号&#xff0c;生成微信带参二维码&#xff0c;实现扫码关注公众号后登录 大家要明…

安科瑞AWT100无线数据采集通信终端

安科瑞AWT100无线数据采集通信终端 安科瑞 崔丽洁

佳信客服全渠道接入手册

包括网页、微信、app、微博、邮箱、字节小程序等几种常见渠道接入配置&#xff0c;今天手把手教你如何配置。 网页渠道插入配置和使用 企业可以通过在web网站或微官网植入网页插件代码&#xff0c;让您的客户可以通过web网站和微官网的“联系客服”按钮&#xff0c;与企业客服…

NC与单一窗口数据对接丨外贸软件

在国际贸易通关过程中&#xff0c;所涉及相关部门的信息管理&#xff0c;主要是以数字化流程系统为主&#xff0c;让每个部门业务的申请、办理、回复采用电子化和互联网化。由于每个环节部分的数据壁垒未打通&#xff0c;数据无法协同共享&#xff0c;导致在口岸通关的过程中&a…

小满OKKICRM和畅捷通T+接口打通对接实战

数据源平台:小满OKKICRM 小满科技一直以“人工智能大数据”为核心驱动力&#xff0c;并融入多年深耕CRM行业的经验&#xff0c;为外贸客户提供多场景的解决方案。凭借卓越的服务水准&#xff0c;小满科技先后斩获“年度最佳外贸SaaS服务商”、“2019杰出品牌形象奖”、“2020最…

最新码支付源码+微信/支付宝/qq/秒挂支付/uid+三网监控+易支付H5接口 +聚合免签系统

&#xff08;码支付不支持虚拟主机&#xff09;强烈建议使用&#xff1a;[服务器]&#xff08;标准版、系统选Centos、其他配置默认即可后续可升级配置&#xff09;&#xff0c;刚入门选择最低配置或者活动机器均可。服务器环境要求的配置&#xff1a;PHP 7.3 Mysql 5.7 Sup…

vagrant下的虚拟机与windows主机通信,vagrant可以接受数据,主机ping一下显示请求超时,此时应该更换ip地址的最后一位,可能是ip地址冲突的原因,而不是防火墙是否的原因。

vagrant下的虚拟机与windows主机通信&#xff0c;vagrant可以接受数据&#xff0c;主机ping一下显示请求超时&#xff0c;此时应该更换ip地址的最后一位&#xff0c;可能是ip地址冲突的原因&#xff0c;而不是防火墙是否的原因。

网吧电脑显示连不上服务器,Pubwin客户机连不上服务器怎么办?

前面小编分享过文章《pubwin2009客户机的配置方法》&#xff0c;下面小编说说客户机使用过程中常见的一个问题&#xff1a;pubwin2009客户机连接不上服务器&#xff1f;遇到这种问题该如何解决呢。 pubwin2009客户机连接不上服务器&#xff0c;主要是因为控制台列表中&#xff…

虚拟机CentOS7网络Ping不通问题

目录 1、情境复现 2、查看路由信息 3、尝试重启网络服务 4、按照提示查看网络服务状态 5、检查ifcfg-ens33配置是否正确 6、检查VM虚拟网络编辑器子网IP是否正确 7、引入Network与NetworkManage的概念 8、查看NetworkManage状态 9、关闭NetworkManage及开机自启 10、…

ChatGLM服务器部署微调(一)

项目下载 下载地址&#xff1a;https://github.com/THUDM/ChatGLM-6B/tree/main 远程环境搭建以及配置 因为我是在服务器上运行&#xff0c;所以先搭建一下远程环境&#xff0c;如果不知道的话&#xff0c;可以看我之前这篇博客 详细完整pycharm远程连接服务器&#xff0c;…

【历史上的今天】12 月 9 日:微软推出 Windows 2.0;五十年前的极客科技展;第一个获得专利的人

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2021 年 12 月 9 日&#xff0c;在 1968 年的今天&#xff0c;Douglas Engelbart 在一场重要会议上&#xff08;正文将会介绍&#xff09;演示了世界上的第一个鼠标&am…

【历史上的今天】10 月 26 日:NetBSD 系统发布;Windows 8 诞生;微软推出 Surface 系列

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 10 月 26 日&#xff0c;历史上的今天&#xff0c;英国足协在伦敦成立&#xff0c;制定了第一个足球规则&#xff0c;宣告了现代足球运动的诞生&#xff1b;足…

校验密码复杂度(规则:长度8-30,必须包含数字、字母、特殊符号)、校验用户名(规则:长度4-19,包含数字、字母,不包含特殊字符)

校验密码复杂度&#xff08;规则&#xff1a;长度8-30&#xff0c;必须包含数字、字母、特殊符号&#xff09; 校验用户名&#xff08;规则&#xff1a;长度4-19&#xff0c;包含数字、字母&#xff0c;不包含特殊字符&#xff09;

密码长度至少6位,包括任意字符

页面标签 < asp:RegularExpressionValidator ID "revPassword" ControlToValidate "txtPassword" Display "Dynamic" ValidationExpression "([\s\S]{6,})" runat "server" ErrorMessage "密码长度至少6位" &…

在26个字符大小写和9个数字组成的列表中随机生成10个长度为8密码。

import random lst[] #建一个空列表 print(ord(a)) #拿到a的数字编码 97 print(ord(z)) #拿到z的数字编码 122 print(ord(A)) #拿到A的数字编码 65 print(ord(Z)) #拿到Z的数字编码 90 for i in ran…

新闻稿怎么写?

首先咱们要熟记新闻稿的六大要素和三要点&#xff1a; 新闻 六要素&#xff1a; 1、时间 2、地点 3、人物 4、事件 5、经过 6、结果 新闻稿怎么写 简单来说呢&#xff0c;就是咱们在在XXX时间,XXX地点&#xff0c;XXX人物&#xff0c;举办了XXX活动或者说做了什么事&#xff0c…

#A. gzx 的数学题

只要a b的结果不是 1&#xff0c;那答案就是 1&#xff0c;否则答案就是2。 注意数据范围&#xff0c;需要使用 long long #include <bits/stdc.h> #define int long long using namespace std; int a,b; signed main() {scanf("%lld%lld",&a,&b);if…

2016年全国高中数学联赛加试T2解答

2016年全国高中数学联赛加试T2解答 加试T2为平面几何。   题意如图&#xff0c; O 1 &#xff0c; O 2 O_1&#xff0c;O_2 O1​&#xff0c;O2​分别为三角形 X A C , Y A B XAC,YAB XAC,YAB外心。 B X A C C Y A B BX \times AC CY \times AB BXACCYAB&#xff0c;求证…

一些高中数学基础题(持续更新)

索引 1.&#xff08;解三角形&#xff09;在① a c 3 ac\sqrt[{}]{3} ac3 ​&#xff0c;② c sin ⁡ A 3 c\sin A3 csinA3&#xff0c;③ c 3 b c\sqrt[{}]{3}b c3 ​b这三个条件中任选一个&#xff0c;补充在下面问题中&#xff0c;若问题中的三角形存在&#xff0c;求 c …