QR二维码检测

news/2024/12/2 19:49:15/

引言

QR二维码在我们的日常生活中非常多见,比如微信和支付宝,火车票和商品标识等。二维码的出现极大地方便了我们的日常·生活,同时也能将信息较为隐蔽地进行传输。

1、定位结果的detect()函数

bool cv::QRCodeDetector::detect(InputArray img, OutputArray points)

img:待检测是否含有QR二维码的灰度图像或者彩色图像

points:包含QR二维码的最小区域四边形的4个顶点坐标,即二维码的4个顶点

2、 定位结果解码的decode()函数

std::string cv::QRCodeDetector::decode(InputArray img, InputArray points, OutputArray straight_qrcode = noArray())

img:含有QR二维码的图像

points:包含QR二维码的最小区域的四边形的四个顶点

straight_qrcode:经过校正和二值化的QR二维码

 3、识别并解码的detectAndDecode()函数

std::string cv::QRCodeDetector::decode(InputArray img, OutputArray points = noArray(), OutputArray straight_qrcode = noArray())

img:含有QR二维码的图像

points:包含QR二维码的最小区域的四边形的四个顶点

straight_qrcode:经过校正和二值化的QR二维码

 4、代码实现

#include <iostream>
#include <opencv2/highgui.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp> 
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;int main()
{Mat img = imread("F:\\图像处理\\图片\\QR.jpg");if (img.empty()) {cout << "请确认文件名称是否正确!" << endl;return -1;}Mat gray, qrcode_bin;cvtColor(img, gray, COLOR_BGR2GRAY);QRCodeDetector qrcodedetector;vector<Point> points;string information;bool isQRcode;isQRcode = qrcodedetector.detect(gray, points);	//识别二维码if (isQRcode) {//解码二维码information = qrcodedetector.decode(gray, points, qrcode_bin);cout << points << endl;	//输出4个坐标的顶点}else {cout << "无法识别二维码,请确认图像是否含有二维码!" << endl;return -1;}//绘制二维码边框for (int i = 0; i < points.size(); i++) {if (i == points.size() - 1) {line(img, points[i], points[0], Scalar(0, 0, 255), 2, 8);break;}line(img, points[i], points[i + 1], Scalar(0, 0, 255), 2, 8);}//将解码内容输出到图片上putText(img, information.c_str(), Point(20, 30), 0, 1.0, Scalar(0, 0, 255), 2, 8);//利用函数直接定位二维码并解码string information2;vector<Point> points2;information2 = qrcodedetector.detectAndDecode(gray, points2);cout << points2 << endl;putText(img, information2.c_str(), Point(20, 55), 0, 1.0, Scalar(0, 0, 0), 2, 8);//输出结果namedWindow("result", WINDOW_NORMAL);imshow("result", img);namedWindow("qrcode_bin", WINDOW_NORMAL);imshow("qrcode_bin", qrcode_bin);waitKey(0);return 0;
}

5、结果

 QR二维码检测的流程到这里就全部完成了,如果您觉得以上内容对您有所帮助,不妨一键三连,感想您的观看!


http://www.ppmy.cn/news/228671.html

相关文章

二维码+互联网云技术在中建二局施工项目管理中的应用实践

中建二局&#xff08;全称&#xff1a;中国建筑第二工程局有限公司&#xff09;是世界500强企业—中国建筑股份有限公司的全资子公司&#xff0c;是集房建、基建、核电、火电、风电等多种建设和投资相融合的、国内最具综合实力的大型国有企业集团公司。中建二局具有土木建筑、设…

二维码(QRcode)容量的计算与版本

转载自&#xff1a; https://www.cnblogs.com/feng9exe/p/5995055.html 4.版本信息&#xff1a;即二维码的规格&#xff0c;QR码符号共有40种规格的矩阵&#xff08;一般为黑白色&#xff09;&#xff0c;从21x21&#xff08;版本1&#xff09;&#xff0c;到177x177&#xff…

微信公众号推广分享二维码,关联扫码关注的客户

最近公司做活动推广公众号&#xff0c;公司下面有代理人&#xff0c;每个代理人都要有个独立的公众号推广码&#xff0c;让每个代理都去推广&#xff0c;用户扫描代理推广的二维码&#xff0c;关注公众号的同时&#xff0c;也清楚这个用户是扫描了哪个代理的推广二维码&#xf…

【二维码】二维码识别

一、什么是二维码 二维码 &#xff08;2-dimensional bar code&#xff09;&#xff0c;是用某种特定的几何图形按一定规律在平面&#xff08;二维方向上&#xff09;分布的黑白相间的图形记录数据符号信息的。 二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码…

大悦城中粮物业:用二维码搭建物业系统,“多快好省”提高管理效率

中粮物业&#xff08;大悦服务&#xff09;隶属于大悦城控股集团股份有限公司&#xff0c;成立于1993年6月&#xff0c;是中国物业管理协会会员单位、广东省物业管理行业协会常务理事单位。 作为连续多年蝉联“中国物业服务百强企业”的头部物业公司&#xff0c;中粮物业自主研…

草料二维码统计扫描信息

目录 1.注册账号并登陆 2.创建活码 2.1 点击活码后编辑 2.1.1 新建->空白建码(也可以选择模板) 3.查看统计信息 3.1 扫描创建的活码 3.2 数据分析-> 扫描量统计 需求说明&#xff1a; 由于服务推广需要统计扫码人数&#xff0c;所以使用草料二维码后台管理服务 1.…

QRCode二维码的应用心得

http://frankman.blog.163.com/blog/static/3780069920113169555147/ 要使用二维条码来存放更多的可压缩信息&#xff0c;本着前人栽树后人乘凉的原则&#xff0c;选择从网上下载开源的工具进行再利用。因此选择了日本人开发的一套二维条码实现&#xff0c;网上也提供了很多的例…