吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2249|回复: 14
收起左侧

[Python 原创] 用少量代码即可实现一个二维码识别器

  [复制链接]
Endurance 发表于 2023-9-12 15:28

使用语言:python,需要用到cv2库。主要(唯一)功能:识别电脑摄像头前面的二维码。能够实现镜像显示图像,同一个二维码在镜头前晃动避免重复识别。

import cv2
from PIL import Image
from pyzbar.pyzbar import decode
import random
import os

import sys

from PyQt5.QtWidgets import QApplication, QWidget,QSystemTrayIcon,QAction,QMenu,qApp,QMessageBox
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit,
    QTextEdit, QGridLayout, QApplication)

x=[]
class emp():
    data = b'XXX'

global isExit
isExit = False
global lastResult
lastResult = ''
class MyQRRec(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # self.resize(850, 650)
        # self.move(300, 300)
        self.setGeometry(300, 200, 850, 650)           
        self.setWindowTitle('二维码识别')
        grid = QGridLayout()
        self.setLayout(grid)    
        grid.setSpacing(10)

        titleEdit = QTextEdit()
        titlePrompt = QLabel('把二维码放在摄像头前面:')
        grid.addWidget(titlePrompt,1,1)
        grid.addWidget(titleEdit, 2, 1)

        self.show()
        x = []
        cap = cv2.VideoCapture(0)
        #-----------------------------
        cv2.namedWindow('Camera Feed')
        while not(isExit):     

            ref,frame = cap.read()
                        #镜像显示
            frame = cv2.flip(frame, 1)

            cv2.imshow('Camera Feed', frame)
            x=decode(frame)
            app.processEvents()
            if x!=[]:
                y=x[0].data

                y=y.decode()
                global lastResult
                if y!=lastResult:
                    titleEdit.setPlainText ( titleEdit.toPlainText()+y )
                    lastResult = y

        cap.release()
        cv2.destroyAllWindows()
        x=['fdfdfd']
        sys.exit()
        QCoreApplication.instance().quit                

    def closeEvent(self, event):
        global isExit
        isExit =True

if __name__ == '__main__':

    app = QApplication(sys.argv)

    w = MyQRRec()

    sys.exit(app.exec_())

免费评分

参与人数 4吾爱币 +9 热心值 +3 收起 理由
xyw930511 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
hkq666 + 1 + 1 谢谢@Thanks!
hrh123 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

不知道改成啥 发表于 2023-9-12 15:42
python这样用代码还是好多
kaci1129 发表于 2023-9-12 16:23
52bojie 发表于 2023-9-12 17:14
dychjyfgfda 发表于 2023-9-12 20:18
这个有意思,可以用摄像头代替扫码枪么?
hymnmx 发表于 2023-9-12 20:20
感谢分享  不错不错  学习啦
头像被屏蔽
moruye 发表于 2023-9-12 21:21
提示: 作者被禁止或删除 内容自动屏蔽
redfieldw 发表于 2023-9-12 23:21
这个厉害,之前还遇到过这个需求,不过最后因为数量少还是用手机做了
chaozhi 发表于 2023-9-13 09:10
这个厉害,学习一下QT5和CV2的运用,感谢分享
jg57055 发表于 2023-9-13 17:11
学习了,后面自己测试看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表