找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 975|回复: 14

用少量代码即可实现一个二维码识别器

[复制链接]

48

主题

317

回帖

767

零食

超级显卡32G

积分
1132
发表于 2023-9-12 18:56:43 | 显示全部楼层 |阅读模式
使用语言: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_())
回复

使用道具 举报

8

主题

406

回帖

1万

零食

版主

积分
10598

突出贡献优秀版主论坛元老

发表于 2023-10-7 16:32:03 | 显示全部楼层
这个有木有demo
回复

使用道具 举报

62

主题

1442

回帖

1511

零食

神级显卡

积分
3015
发表于 2023-10-9 09:47:30 | 显示全部楼层
不懂,顶一个不犯法
回复

使用道具 举报

0

主题

36

回帖

3

零食

入门显卡4G

积分
39
发表于 2023-10-24 17:05:27 来自手机 | 显示全部楼层
谢谢分享🌹
回复

使用道具 举报

2

主题

63

回帖

3

零食

初级显卡6G

积分
68
发表于 2023-11-14 14:44:57 | 显示全部楼层
画一下知识点
回复

使用道具 举报

2

主题

63

回帖

3

零食

初级显卡6G

积分
68
发表于 2023-11-14 15:18:56 | 显示全部楼层
不懂,顶一个不犯法
回复

使用道具 举报

0

主题

62

回帖

2290

零食

超级显卡32G

积分
2352
发表于 2023-11-18 17:45:56 | 显示全部楼层
牛牛牛~
回复

使用道具 举报

4

主题

112

回帖

52

零食

初级显卡6G

积分
168
发表于 2023-11-21 09:58:25 | 显示全部楼层
然后速度发货速度风格和
回复

使用道具 举报

19

主题

826

回帖

5945

零食

神级显卡

积分
6790
发表于 2023-11-22 06:49:55 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

15

回帖

33

零食

入门显卡4G

积分
48
发表于 2023-11-22 23:55:46 | 显示全部楼层
这个厉害了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|圈圈AI吧

GMT+8, 2024-12-23 23:30 , Processed in 0.174782 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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