笔记_OpenCV4.5.1新增微信QRCode解码功能

news/2025/9/24 14:10:13/文章来源:https://www.cnblogs.com/swdeng/p/19109152

原文地址:https://cloud.tencent.com/developer/article/1786320

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

下载和编译:

image

 

image

 

使用:

#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);

结果示例:

image

 使用体验:非常适用APP开发者手机端扫码使用,如果是工业应用还需要自己做预处理和增强等步骤。

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

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

相关文章

完整教程:模电基础:基本放大电路及其优化

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【论文阅读】Uncertainty Modeling for Out-of-Distribution Generalization (ICLR 2022) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

数字孪生 + 碳痕追踪:MyEMS 给能源管理装了套 “全链路全景导航”

如果说传统的能源管理是在迷雾中凭经验摸索前行,那么当下的企业则迫切需要一张清晰、实时、能指引每一步节能减碳决策的“全景地图”。这张地图不仅要能还原能源系统的全貌,更要能追踪每一份能耗的“碳足迹”,直抵管…

空间复杂度和时间复杂度

要理解和计算时间复杂度与空间复杂度,关键是分析算法中重复执行的操作次数(时间)和额外开辟的存储空间(空间)如何随输入规模n变化。下面通过具体代码示例详细说明计算方法。 一、时间复杂度计算 时间复杂度关注核…

河北网站快速排名建设学电脑培训班多少一个月

排查流程 hive任务停止是调用org.apache.hive.jdbc.HiveStatement的close()方法实现的 其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。 同时&#xff0c;通过JDK动态代理为其织入了synchronized同步机制&#xff1a;其底层是委托给…

自己做免费手机网站外贸商做英文网站的目的

目录 一、问题引入 二、缓冲区 1、什么是缓冲区 2、刷新策略 3、缓冲区由谁提供 4、重看问题 三、缓冲区的简单实现 一、问题引入 我们先来看看下面的代码&#xff1a;我们使用了C语言接口和系统调用接口来进行文件操作。在代码的最后&#xff0c;我们还使用fork函数创建…

深圳松岗网站建设wordpress xmlseo

转自&#xff1a;技术分享 | MemAvailable 是怎么计算的-腾讯云开发者社区-腾讯云 背景 前两天安装 OceanBase 时遇到一个小问题&#xff1a; 很明显&#xff0c;安装OB时要求服务器可用内存至少 8G&#xff0c;不达标就无法安装。为了凑这3台10G内存的服务器我已经费了不少劲…

基于IOS26的iOS 内存分析与必要内存界定

本文是基于IOS26的iOS 内存分析与必要内存界定,能够从一定角度理解Apple系列设备的内存使用机制。前言: 最近将15和16Pro更新了IOS26,在网上翻阅了一下,没有看见IOS26的内存分析文章,于是自己分析,整理笔记并水一…

深入解析:ARM架构学习9——LM75温度传感器+ADC转换器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

破局 “节能不省钱” 悖论:开源 EMS 生态如何让中小企业用 1/3 成本实现能效跃升?

对于广大中小企业而言,能源成本是运营中不容忽视的核心支出。一个普遍的共识是:节能就是省钱。然而,当企业主们真正调研能源管理系统(EMS)时,往往会被高昂的初始投入和隐形成本劝退——动辄数十万的软件许可费、…

旅游网站开发目标网站建设人员叫什么

在使用Windows 10工作时会遇到形形色色的问题&#xff0c;比如笔记本电脑搜索不到无线网络。那么如何排除故障呢&#xff1f;下面小编与你分享具体步骤和方法。工具/材料Windows 10操作系统操作方法第1&#xff1a;启动Windows 10操作系统&#xff0c;如图所示。点击任务栏&quo…

实用指南:U盘歌单管理器 (专业车载音乐播放列表制作工具)

实用指南:U盘歌单管理器 (专业车载音乐播放列表制作工具)2025-09-24 13:58 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important…

iOS 26 性能测试实战,如何评估启动速度、CPUGPU 负载、帧率与系统资源适配(uni-app 与 iOS 原生应用性能方案)

本文围绕 iOS 26 性能测试展开,结合 Liquid Glass 特效与系统机制变化,介绍启动速度、CPU/GPU 渲染、帧率、资源加载等关键指标测试方法与工具组合,并给出 uni-app 与原生 App 的实战优化策略。iOS 26 正式发布后,…

P14062 【MX-X21-T7】[IAMOI R5] 若我不曾见过太阳 题解

考虑对于每个 \(i\) 求出使 \([1,i]\) 全部排到 \([i+1,n]\) 之前的最小操作次数。将 \(\le i\) 的数视为 \(0\),\(>i\) 的数视为 \(1\),根据操作的顺序,位置差较大的 \((1,0)\) 有序对会优先被交换。 也就是说,…

unity确定性帧同步框架

https://github.com/aaa719717747/TrueSyncExample

03-堆和栈

概述 堆和栈是程序运行时内存分配的两个核心区域,用途、管理方式和特性差异很大。且堆(内存区域)与上篇文章的链表(数据结构)有一定关联,但本质不同 —— 堆是一块内存空间,而链表常被用作管理堆内存的工具。下…

深入解析:Django事务

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做网站6000左右的电脑网上购物商城系统设计

3.mysql数据库3.10 单表查询3.10.1. 简单查询查询在数据库中使用的频率是最高的&#xff1a;十次查询&#xff0c;一次增删改。1)建表2)插入数据3.10.1.1. 选择字段&#xff1a;selectselect 字段名1,字段名2…… from 表名 where 条件;3.10.1.2. 字段重命名(别名)&#xff1a;…

视频汇聚平台EasyCVR如何构建智慧农业监控监管系统?

视频汇聚平台EasyCVR如何构建智慧农业监控监管系统?现代农业的迅速发展中,集成监控管理系统已成为提高农业生产效率和优化管理的关键工具。EasyCVR视频汇聚平台作为一个具有高度可扩展性、灵活的视频处理能力和便捷的…

一套自用的git提交规范,可清晰的识别到关联的任务/bug - 实践

一套自用的git提交规范,可清晰的识别到关联的任务/bug - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…