Python截屏工具,识别屏幕中的二维码

本文介绍了一个Python实现的屏幕截图工具,可以快速识别电脑屏幕上的二维码,避免了手机识别时的摩尔纹干扰和无法立即在电脑上使用的问题。通过Qt构建UI,结合PIL和Dynamsoft Barcode Reader接口完成截图和识别功能。
摘要由CSDN通过智能技术生成

看网页的时候出现二维码怎么快速识别?一般人可能会掏出手机。手机识别有两个问题:1,对着屏幕,会有摩尔纹的干扰。2,识别结果不能在电脑上立刻使用。如果做个截屏小工具来识别,会方便很多。

安装Python依赖包

pip install pillow opencv-python dbr pyside2

屏幕截图识别二维码的步骤

  1. 用Qt搭建UI
  2. 创建一个自定义的全屏Qt widget
  3. 监听鼠标事件,获得区域
  4. 用PIL里的接口根据坐标抓图
  5. 调用Dynamsoft Barcode Reader的接口识别二维码

代码实现

打开UI编辑器(路径:Python37\Lib\site-packages\PySide2\designer.exe)创建界面。
请添加图片描述

  • 两个按钮分别用于区域截图和全屏截图
  • 中间区域是用于显示图片的QLabel

把UI编译成python文件:

pyside2-uic design.ui -o design.py

把UI导入到python工程中:

from design import Ui_MainWindow

class MainWindow(QMainWindow):

    def __init__(self, license):
        super(MainWindow, self).__init__()
        self.setWindowState(Qt.WindowMaximized)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setAcceptDrops(True)

新建SnippingTool.py文件。在里面创建一个自定义的Qt Widget:

import numpy as np
import cv2
from PIL import ImageGrab
from PySide2 import QtWidgets, QtCore, QtGui
from PySide2.QtCore import Qt

class SnippingWidget(QtWidgets.QWidget):
    is_snipping = False

    def __init__(self, parent=None, app=None):
        super(SnippingWidget, self).__init__()
        self.parent = parent
        self.setWindowFlags(Qt.WindowStaysOnTopHint)

        self.screen = app.primaryScreen()
        self.setGeometry(0, 0, self.screen.size().width(), self.screen.size().height())
        self.begin = QtCore.QPoint()
        self.end = QtCore.QPoint(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值