Python用opencv实现动态识别二维码,以及加强版Python GUI(图像用户界面编程)

该博客介绍了如何利用Python的OpenCV库进行动态二维码识别,包括一个简易程序和一个增强版的GUI程序。简易程序通过读取摄像头视频流来识别二维码,并打印出数据。增强版程序则构建了一个Tkinter GUI界面,实时显示识别结果并可以在界面上显示二维码位置。此外,还提到了如何使用auto-py-to-exe将程序打包成可执行文件。
摘要由CSDN通过智能技术生成

 前言

        关于动态识别二维码信息,利用电脑摄像头动态扫描二维码,扫描视频中的二维码。


简易程序

import cv2  pip install opencv-python


def start():
    capture = cv2.VideoCapture(0)
    while True:

        fet, frame = capture.read()
        qrCodeDetector = cv2.QRCodeDetector()
        data, bbox, straight_qrcode = qrCodeDetector.detectAndDecode(frame)
        
        print(data) # data即读取到的数据

        cv2.namedWindow('read-QR', 0)
        cv2.imshow("read-QR", frame)
        k = cv2.waitKey(1)  # 保持画面的持续。
        if k == 27:  # 通过esc键退出摄像
            break

start()

加强版Python GUI(图像用户界面编程)

        由于我在项目中设计了一个PC端执行软件,所以用到了GUI编程,即图像用户界面编程,所以把关于这部分的GUI编程取了出来写在了下面。实际上用上面这个程序已经可以识别二维码了,下面这个程序是将程序由基于控制台来控制执行变成了图形用户界面来控制。将这个程序打包成软件可以用pip install auto-py-to-exe,这个库就是一个图像用户界面的程序,相比别的方式用起来比较友好,具体可以网上搜索学习。

import cv2
import tkinter
from tkinter import *
from PIL import Image, ImageTk
from tkinter import messagebox
import numpy as np

capture = cv2.VideoCapture(0)

root = tkinter.Tk()
root.title("read-QR")
root.geometry('900x600')
img_width = 800
img_height = 600 - 20
canvas = Canvas(root, bg='white', width=img_width, height=img_height)
canvas.place(x=0, y=0)


def on_closing():
    if messagebox.askokcancel("Quit", "Do you want to quit?"):
        root.destroy()
        capture.release()


def start():
    while True:

        fet, frame = capture.read()
        qrCodeDetector = cv2.QRCodeDetector()
        data, points, straight_qrcode = qrCodeDetector.detectAndDecode(frame)
        if data:
            cv2.drawContours(frame, [np.int32(points)], 0, (0, 255, 0), 2)  # 框出二维码位置

            print(data)

            tkinter.Label(root, text="姓名:" + data).place(x=900 - 100, y=0, width=100, height=20)

        tk_img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
        tk_img = Image.fromarray(tk_img)
        tk_img = tk_img.resize((img_width, img_height), Image.ANTIALIAS)
        tk_img = ImageTk.PhotoImage(image=tk_img)
        canvas.create_image(0, 0, anchor='nw', image=tk_img)
        root.update()
        root.after(1)


btnStart = tkinter.Button(root, text='开始', command=start)
btnStart.place(x=0, y=600 - 20, width=70, height=20)

root.protocol('WM_DELETE_WINDOW', on_closing)
root.mainloop()

关于如何制作二维码可看我同专栏的另一边篇文章,链接如下。

Python用qrcode和PIL制作二维码并添加汉字(用Python在图片上添加汉字)_"殇影的博客-CSDN博客python制作二维码,python批量制作二维码,python批量制作带汉字的二维码,在图片上添加汉字,用Python在图片上添加汉字https://blog.csdn.net/weixin_45694843/article/details/128046585?spm=1001.2014.3001.5502

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

"Martix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值