Python生成和识别二维码教程

news2024/11/25 0:42:47

引言

二维码(QR Code)在日常生活中非常常见,广泛应用于支付、登录验证、信息分享等场景。本文将介绍如何使用Python生成和识别二维码,适合初学者快速上手。我们将使用qrcodepyzbar库来实现这一功能。

环境准备

在开始之前,请确保您的Python环境已经安装了qrcodepyzbar库。如果没有安装,可以使用以下命令进行安装:

pip install qrcode[pil]
pip install pyzbar
pip install pillow

代码实现

以下是生成和识别二维码的完整代码:

#!/usr/bin/env python3
# coding:utf-8
import qrcode
from pyzbar.pyzbar import decode
from PIL import Image
import random

def Generate_QR_code():  # 生成二维码
    # 生成随机的20以内的数据计算题
    num1 = random.randint(1, 10)
    num2 = random.randint(1, 10)
    operators = ['+', '-', '*', '/']
    operator = random.choice(operators)

    if operator == '/':
       if num1 % num2 != 0:
           operator = random.choice(['+', '-', '*'])

    eval_operator = operator

    answer = int(eval(f"{num1} {eval_operator} {num2}"))

    data = f"{num1} {operator} {num2} = ?"
    if operator == '*':
        data = f"{num1} × {num2} = ?"

    print(f"计算题: {data}")
    print(f"答案: {answer}")

    # 创建一个QRCode对象
    qr = qrcode.QRCode(
        version=4,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=1,
    )
    # 添加数据
    qr.add_data(data.encode('utf-8'))
    qr.make(fit=True)

    # 创建图像并保存
    img = qr.make_image(fill_color="black", back_color="white")
    img.save("./qrcode.png")

def Identifying_QR_codes():  # 识别二维码
    # 打开图像文件
    img = Image.open('./qrcode.png')
    # 将图像转换为灰度
    img = img.convert('L')
    # 识别图像中的二维码
    barcodes = decode(img)
    # 输出识别结果
    for barcode in barcodes:
        barcodeData = barcode.data.decode("utf-8")
        print(barcodeData)

Generate_QR_code()
Identifying_QR_codes()

代码详解

生成二维码

Generate_QR_code函数用于生成二维码:

  1. 生成随机计算题:生成两个1到10之间的随机整数,并随机选择一个运算符。
  2. 计算答案:计算出随机生成的计算题的答案。
  3. 创建二维码:使用qrcode库创建二维码,并将计算题作为数据添加到二维码中。
  4. 保存二维码图像:将生成的二维码图像保存为qrcode.png文件。
识别二维码

Identifying_QR_codes函数用于识别二维码:

  1. 打开图像文件:打开保存的二维码图像文件qrcode.png
  2. 转换为灰度图像:将图像转换为灰度图像,便于识别。
  3. 识别二维码:使用pyzbar库识别二维码,并输出识别结果。

使用场景

二维码技术应用广泛,以下是几个常见的使用场景:

  1. 网站登录验证:通过扫描二维码登录,提升安全性和用户体验。
  2. 扫码挪车:在车辆挡道时,可以通过扫描车主留下的二维码联系车主。
  3. 信息分享:在名片或传单上印刷二维码,方便快速获取联系信息或网址。

示例

在这里插入图片描述

结论

本文介绍了如何使用Python生成和识别二维码的基础知识和实现方法,并给出了几个实际应用场景。希望通过本教程,您能掌握二维码生成和识别的基本技能,并将其应用到实际项目中。

欢迎在评论区留言讨论,分享您的学习心得和疑问。Happy Coding!

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

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

相关文章

Python+Pytest+Allure+Yaml+Jenkins+GitLab接口自动化测试框架详解

PythonPytestAllureYaml接口自动化测试框架详解 编撰人:CesareCheung 更新时间:2024.06.20 一、技术栈 PythonPytestAllureYamlJenkinsGitLab 版本要求:Python3.7.0,Pytest7.4.4,Allure2.18.1,PyYaml6.0 二、环境配置 安装python3.7&…

C++并发之环形队列(ring,queue)

目录 1 概述2 实现3 测试4 运行 1 概述 最近研究了C11的并发编程的线程/互斥/锁/条件变量,利用互斥/锁/条件变量实现一个支持多线程并发的环形队列,队列大小通过模板参数传递。 环形队列是一个模板类,有两个模块参数,参数1是元素…

LeetCode 1667, 36, 199

目录 1667. 修复表中的名字题目链接表要求知识点思路代码 36. 有效的数独题目链接标签思路代码 199. 二叉树的右视图题目链接标签思路代码 1667. 修复表中的名字 题目链接 1667. 修复表中的名字 表 表Users的字段为user_id和name。 要求 编写解决方案,修复名字…

上位机图像处理和嵌入式模块部署(mcu 项目1:上位机编写)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面,我们说过要做一个报警器。如果只是简单做一个报警器呢,这个基本上没有什么难度。这里,我们就适当提高一下…

LLM意图识别器实践

利用 Ollama 和 LangChain 强化条件判断语句的智能提示分类 ❝ 本文译自Supercharging If-Statements With Prompt Classification Using Ollama and LangChain一文,以Lumos工具为例,讲解了博主在工程实践中,如何基于LangChain框架和本地LLM优…

Meta发布LLM编译器 称将改变我们的编程方式

Meta发布了Meta 大型语言模型(LLM)编译器,这是一套强大的开源模型,旨在优化代码并彻底改变编译器设计。这项创新有望改变开发人员优化代码的方式,使代码优化更快、更高效、更具成本效益。 在将大型语言模型应用于代码和…

Vue--》从零开始打造交互体验一流的电商平台(四)完结篇

今天开始使用 vue3 + ts 搭建一个电商项目平台,因为文章会将项目的每处代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏,学习更多…

20240629在NanoPi R6C开发板的预编译的Android12下使用iperf3测试网速

20240629在NanoPi R6C开发板的预编译的Android12下使用iperf3测试网速 2024/6/29 11:11 【表扬一下】友善之臂没有提供update.img的预编译固件,我心里一凉,这么多IMG文件,得一个一个选择呀! 但是别人友善之臂特别急人之所急&#…

Linux部署wordpress站点

先安装宝塔面板 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec 因为wordpress需要php,mysql,apache ,httpd环境 参考:Linux 安装宝塔…

Docker基础知识的掌握,相关基本命令的用法

安装docker步骤:https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBkShcucLZbrn2d 1.docker Docker 是一种容器化平台,用于帮助开发者打包、发布和管理应用程序及其依赖关系。通过 Docker,开发者可以将应用程序及其所有依赖项打包到一个称为…

java虚拟机栈帧操作

虚拟机栈(Virtual Machine Stack)是虚拟机(如JVM、Python VM等)用来管理方法调用和执行的栈结构。它主要用于存储方法调用的相关信息,包括局部变量、操作数栈、动态链接和方法返回地址等。 java虚拟机栈操作的基本元素就是栈帧,栈帧主要包含了局部变量表、操作数栈、动态…

10分钟完成微信JSAPI支付对接过程-JAVA后端接口

引入架包 <dependency><groupId>com.github.javen205</groupId><artifactId>IJPay-WxPay</artifactId><version>${ijapy.version}</version></dependency>配置类 package com.joolun.web.config;import org.springframework.b…

【算法专题--栈】栈的压入、弹出序列 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 &#x1f4a7;栈模拟法&#x1f4a7;-- 双指针 ⭐ 解题思路 ⭐ 案例图解 四、总结与提炼 五、共勉 一、前言 栈的压入、弹出序列 这道题&#xff0c;可以说是--栈专题--&#xff0c;最经典的一道题&#xff0c;也是在…

贪心法思想-求最大子数组和案例图解

贪心法思想 ​ 基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期获得全局最优解。 ​ 正如其名字一样&#xff0c;贪心法在解决问题的策略上目光短浅&#xff0c;只根据当前已有的信息做出选择…

【FFmpeg】avformat_write_header函数

FFmpeg相关记录&#xff1a; 示例工程&#xff1a; 【FFmpeg】调用ffmpeg库实现264软编 【FFmpeg】调用ffmpeg库实现264软解 【FFmpeg】调用ffmpeg库进行RTMP推流和拉流 【FFmpeg】调用ffmpeg库进行SDL2解码后渲染 流程分析&#xff1a; 【FFmpeg】编码链路上主要函数的简单分…

VMware中安装CentOS系统

VMware中安装CentOS系统 CentOS 镜像的准备创建虚拟机Cent OS系统的安装 CentOS 镜像的准备 下载链接&#xff1a;清华园CenOS 7镜像下载 VMware的安装参考&#xff1a;VMware workstation pro 16 虚拟机的安装 创建虚拟机 1.打开VMware workstation pro 16->创建新的虚拟…

[leetcode]insert-into-a-binary-search-tree

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:TreeNode* insertIntoBST(TreeNode* root, int val) {if (root nullptr) {return new TreeNode(val);}TreeNode* pos root;while (pos ! nullptr) {if (val < pos->val) {if (pos->left nullptr…

掌握Python编程的深层技能

一、Python基础语法、变量、列表、字典等运用 1.运行python程序的两种方式 1.交互式即时得到程序的运行结果 2.脚本方式把程序写到文件里(约定俗称文件名后缀为.py),然后用python解释器解释执行其中的内容2.python程序运行的三个步骤 python3.8 C:\a\b\c.py 1.先启动python3…

揭秘循环购模式:消费即赚钱,私域电商新纪元

消费1000送2000、每天领钱、钱还可以提现&#xff0c;这样的商业模式——循环购模式&#xff0c;确实在私域电商领域引起了广泛的关注。这种模式的成功并非偶然&#xff0c;而是基于合理的返利规则和商业模式创新。下面我将为您详细解析循环购模式为何能够吸引消费者&#xff0…

记录一次——RK100键盘按键失效修复

一、背景说明: 背景&#xff1a;购买的键盘是RK的型号RK100&#xff0c;具有紧凑的外观&#xff0c;并搭配了TTC金粉轴&#xff0c;使用起来还不错&#xff0c;目前已经是第3年了。问题&#xff1a;前几个月会出现H按键失效的问题&#xff0c;但是过一段时间又会修复。最近是Q…