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

news/2024/2/29 3:45:14

        使用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/58593682points = points.reshape((-1,1,2))cv.polylines(img, [points], True, (0,255,0), 5)rectPoints = QRCode.rectcv.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/58593682points = points.reshape((-1,1,2))cv.polylines(img, [points], True, (0,255,0), 5)rectPoints = BARCode.rectcv.putText(img, stringData, (rectPoints[0] - 20, rectPoints[1] - 5), cv.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2)plt.imshow(img[:,:,::-1])

         识别结果:


https://www.xjx100.cn/news/3092585.html

相关文章

Java 1.0 到 Java 17历程

Java 自 1995 年发布以来,经历了多个版本的更新,每个版本都引入了新的特性和改进。以下是从 Java 1.0 到 Java 17(截至我所掌握的最新信息)的主要新特性概览: Java 1.0 (1996) 初始版本,包含了Java的基础…

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

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

Vue项目 配置项设置

一、项目运行时浏览器自动打开 找到package.json文件 找到"sctipts"配置项 在"serve"配置项最后加上--open "scripts": {"serve": "vue-cli-service serve --open","build": "vue-cli-service build&quo…

如何使用rclone将腾讯云COS桶中的数据同步到华为云OBS

在多云策略与数据迁移趋势下,企业往往需要将数据在不同云服务提供商之间进行迁移。本文介绍如何使用rclone工具同步腾讯云COS(Cloud Object Storage)桶中的数据到华为云OBS(Object Storage Service)。先决条件是您已经…

代码随想录 10.13 || 二叉树 LeetCode 235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

二叉树的定义: 回顾一下二叉树的定义,加固记忆。 struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptre) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, Tre…

Redis从入门到精通(三)-高阶篇

文章目录 0. 前言[【高阶篇】3.1 Redis协议(RESP )详解](https://blog.csdn.net/wangshuai6707/article/details/132742584)[【高阶篇】3.3 Redis之底层数据结构简单动态字符串(SDS)详解](https://blog.csdn.net/wangshuai6707/article/details/131101404)[【高阶篇】3.4 Redis…

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

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

使用pytorch利用神经网络原理进行图片的训练(持续学习中....)

1.做这件事的目的 语言只是工具,使用python训练图片数据,最终会得到.pth的训练文件,java有使用这个文件进行图片识别的工具,顺便整合,我觉得Neo4J正确率太低了,草莓都能识别成为苹果,而且速度慢,不能持续识别视频帧 2.什么是神经网络?(其实就是数学的排列组合最终得到统计结果…