基于OpenCV+ZXing手工打造,FPS300+的二维码识别库

基于OpenCV+ZXing手工打造,FPS300+的二维码识别库

图片

点击上方蓝字关注我们

微信公众号:OpenCV学堂

关注获取更多计算机视觉与深度学习知识

软件版本信息

Windows10系统
OpenCV4.5.1
VS2017

OpenCV官方支持函数

 OpenCV在4.5.1中支持的了微信开源的二维码识别,通过检测模型与超像素模型分别实现了检测与预处理,然后基于ZXing实现了解码。当前还在扩展模块中,而且还需要DNN模型加持,模型虽小,但是也费电!好处是三行代码,调用简单:

import cv2
detector = cv2.wechat_qrcode_WeChatQRCode("detect.prototxt", "detect.caffemodel", "sr.prototxt", "sr.caffemodel")
image = cv2.imread("weixin.png")
res, points = detector.detectAndDecode(image)

视频检测+识别的速度大概FPS 70+左右,有人已经测试过!我看到这个以后的第一感觉就是我有一个更加环保+快速的方案。

他山之石可以攻玉

在我之前传统的二维码检测基础上,重新整理并优化了流程,使用二值分析方法实现二维码检测定位,然后基于ZXing解码实现了二维码的检测与识别。对输入图像大小为:

 

3508x2480的图像!
检测+识别平均速度在25毫秒左右!

基于摄像头的二维码实时识别,640x480分辨率,检测+识别速度超过350+FPS,比直接调用OpenCV官方支持函数快5倍!而且支持旋转、低像素重建、边缘干扰修复等预处理。不信请看图:

图片

图片

代码就不放出来了,好久以前在OpenCV还没有二维码检测函数的时候,我写过一篇文章,教大家如何基于OpenCV手工写代码实现高精准的二维码检测。链接在这里:

OpenCV二维码检测与定位

干货 | 基于OpenCV Python实现二维码检测与识别

现在的代码就是基于当时文章代码上修改的,然后添加了ZXing库支持,实现了检测+识别。可以说速度完全吊打OpenCV官方提供三行代码!其实我封装好了函数,调用很简单,测试代码如下:

cv::Mat codeROI;
std::vector<cv::Point> pts;
ResultInfo rsinfo;
QRCodeDetector qrdetector;
cv::VideoCapture cap(0);
while (true) {
    cap.read(image);
    int64 start = cv::getTickCount();
    qrdetector.detectQR(image, pts, codeROI);
    if (!codeROI.empty()) {
        qrdetector.decode(codeROI, rsinfo);
        if (rsinfo.status == 0) {
            //printf("QR Code Detected! \n");
            //printf("QR Code recognized! \n");
            //std::cout << rsinfo.code << std::endl;
            cv::putText(image, rsinfo.code, pts[0], cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(25500), 28);
        }
    }
    double ct = (cv::getTickCount() - start) / cv::getTickFrequency();
    // printf("execution time : %.5f ms\n", ct * 1000);
    cv::putText(image, cv::format("FPS: %.2f"1.0/ct), cv::Point(5050), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(00255), 28);
    cv::imshow("识别结果", image);
    cv::waitKey(1);
}

 

什么都别说了,点赞,转发,后续还有故事继续讲......

OpenCV学堂
OpenCV学堂
专注计算机视觉开发技术分享,技术框架使用,包括OpenCV,Tensorflow,Pytorch教程与案例,相关算法详解,最新CV方向论文,硬核代码干货与代码案例详解!作者在CV工程化方面深度耕耘15年,感谢您的关注!期待您的一直支持!
338篇原创内容
公众号

 

posted @   水木清扬  阅读(2061)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2019-02-21 keras猫狗大战
2019-02-21 keras猫狗图像识别
点击右上角即可分享
微信分享提示