Python Opencv实践 - 二维码和条形码识别

        使用pyzbar模块来识别二维码条形码。ZBar是一个开源软件,用来从图像中读取条形码,支持多种编码,比如EAN-13/UPC-A、UPC-E、EAN-8、代码128、代码39、交错2/5以及二维码

        pyzbar是python封装ZBar的模块,我们用它来做条形码二维码的识别。

        安装方法:

        

平台安装方法
Windows

使用pip安装即可

pip install pyzbar

Ubuntu

sudo apt-get install libzbar-dev

pip install zbar

参考:

ubuntu中安装zbar_ubuntu 安装libzbar依赖-CSDN博客

        python识别二维码并绘制边框和文字的代码:

import matplotlib.pyplot as plt
import numpy as np
import cv2 as cv
from pyzbar.pyzbar import decode

#读取二维码图像
img = cv.imread('../../SampleImages/QRCodes.jpg')

QRCodes = decode(img)
for QRCode in QRCodes:
    print(QRCode)
    stringData = QRCode.data.decode('utf-8')
    print("二维码字符串是:\"" + stringData + "\"")
    #绘制出二维码边框
    points = np.array([QRCode.polygon], np.int32)
    #numpy reshape: https://blog.csdn.net/DocStorm/article/details/58593682
    points = points.reshape((-1,1,2))
    cv.polylines(img, [points], True, (0,255,0), 5)
    rectPoints = QRCode.rect
    cv.putText(img, stringData, (rectPoints[0], rectPoints[1]), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,255), 2)

plt.imshow(img[:,:,::-1])

运行结果(最后的二维码是残缺的,因此未识别): 

        识别条形码的代码和识别二维码的代码是一样的:

#读取条形码图像
img = cv.imread('../../SampleImages/BARCodes.png')

BARCodes = decode(img)
for BARCode in BARCodes:
    print(QRCode)
    stringData = BARCode.data.decode('utf-8')
    print("条形码字符串是:\"" + stringData + "\"")
    #绘制出二维码边框
    points = np.array([BARCode.polygon], np.int32)
    #numpy reshape: https://blog.csdn.net/DocStorm/article/details/58593682
    points = points.reshape((-1,1,2))
    cv.polylines(img, [points], True, (0,255,0), 5)
    rectPoints = BARCode.rect
    cv.putText(img, stringData, (rectPoints[0] - 20, rectPoints[1] - 5), cv.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2)

plt.imshow(img[:,:,::-1])

         识别结果:


http://www.niftyadmin.cn/n/5201031.html

相关文章

柯桥考级日语学校,日语听力如何拿满分

今天,来分析一下能力考听力中的五道听力题的题型和解题技巧。 首先在N1和N2中,听力题型是一样的。 第一大题「課題理解」 第二大题「ポイント理解」 第三大题「概要理解」 第四大题叫做「即時応答」 第五大题叫做「統合理解」 名字不同,考点和…

scala的schema函数(算子)

在翻阅一些代码的时候,schema算子好像没碰到过,比较好奇structField这个类型,为什么可以直接用name参数,就翻阅了下资料: 在 Apache Spark 中,DataFrame 是一种分布式的数据集,它是以类似于关系…

详解Python安装requests库的实例代码

文章目录 前言基本用法基本的get请求带参数的GET请求解析json关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前…

第一次参加算法比赛是什么感受?

大家好,我是怒码少年小码。 冬日暖阳,好日常在。今天中午在食堂干饭的时候,我的手机📱收到了一条收货信息。 阿?什么玩意儿?我又买啥了? 个败家玩意,我都准备好叨叨我自己&#x…

十七、SpringAMQP

目录 一、SpringAMQP的介绍: 二、利用SpringAMQP实现HelloWorld中的基础消息队列功能 1、因为publisher和consumer服务都需要amqp依赖,因此这里把依赖直接放到父工程mq-demo中 2、编写yml文件 3、编写测试类,并进行测试 三、在consumer…

大学计算机毕业设计真的很难完成吗?(资源持续更新~~)

近几年毕业设计和毕业答辩的要求和难度不断提升,传统的毕业项目缺少创新和亮点,往往达不到毕业答辩的要求,于是培训教育机构专门针对各大院校毕业设计进行培训指导,衍生出很多届优秀学员的毕业项目。为了让广大同学都可以顺利通过…

opencv-形态学处理

通过阈值化分割可以得到二值图,但往往会出现图像中物体形态不完整,变的残缺,可以通过形态学处理,使其变得丰满,或者去除掉多余的像素。常用的形态学处理算法包括:腐蚀,膨胀,开运算&a…

openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值

文章目录 openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值129.1 操作步骤129.2 示例 openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值 openGauss安装后,有一套默认的运行参数,为了使openGauss与业务的配合度更高&…

【项目管理】甘特图(2)——甘特图教程

哈喽啊,你好,我是雷工。 通过上节初步认识了甘特图,本节学习如何一步步创建甘特图,以下为学习笔记。 一、样例展示 下边记录创建甘特图的操作步骤,完成的实际效果如下图所示: 实例图的上端展示项目的重要…

2021年03月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 小猫在沙漠中旅行好不容易找到了一杯水,初始位置如下图所示,下面哪个程序可以帮助它成功喝到水? A: B: C: D:

【JVM】JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]

文章目录 一、背景二、原因三、 代码验证 一、背景 生产环境日志突然膨胀到100G, 为了定位问题,所以截取了部分报错日志, 问题是 堆栈信息呢? 哪里报的NPE在哪??? 信息如下: [ERROR] 2020-12-09 09:41:50.053 - [taskAppIdTASK-1919-33805-97659]:[156] - wait task qu…

linux之chmod命令

在linux系统中经常遇到需要对文件修改读写执行的权限,下面对chomod命令进行梳理总结。 1、文件权限 在linux系统中,每个文件都有归属的所有者和所有组,并且规定了文件的所有者、以及其他人对文件所拥有的可读(r)、可写…

UE必学系列(基础篇完结)

导语: UE必须系列基础篇完结,敬请期待进阶篇 基础篇文章:在掌握了UE4基础操作,并且能上手做一些项目之后,对UE4知识进行更完善的知识体系学习。主要是把学习视频链接汇总,主要学习思路是 优先官方视频和官…

STM32出现 Invalid Rom Table 芯片锁死解决方案

出现该现象的原因为板子外部晶振为25M,而程序软件上以8M为输入晶振频率,导致芯片超频锁死,无法连接、下载。 解决方案 断电,将芯片原来通过10k电阻接地的BOOT0引脚直接接3.3V,硬件上置1上电,连接目标板&am…

国产压力测试工具的主要作用

国产压力测试工具可以帮助软件开发和维护团队对系统进行全面的性能测试,以评估系统在高负载下的性能表现。以下是国产压力测试工具的主要作用: 性能评估:国产压力测试工具可以模拟多用户同时对系统进行访问和操作,通过对系统的响应…

手把手带你在AutoDL上部署InternLM-Chat-7B Transformers

手把手带你在AutoDL上部署InternLM-Chat-7B Transformers 调用 项目地址:https://github.com/KMnO4-zx/self_llm.git 如果大家有其他模型想要部署教程,可以来仓库提交issue哦~ 也可以自己提交PR! InternLM-Chat-7B Transformers 部署调用 环…
最新文章