网络营销网站建设步骤,蒙牛企业网站建设规划书,自己可以做开奖网站吗,火车头采集器wordpress发布模块实时英文 OCR 文字识别#xff1a;从摄像头到 PyQt5 界面的实现
引言
在数字化时代#xff0c;文字识别技术#xff08;OCR#xff09;在众多领域中发挥着重要作用。无论是文档扫描、车牌识别还是实时视频流中的文字提取#xff0c;OCR 技术都能提供高效且准确的解决方案…实时英文 OCR 文字识别从摄像头到 PyQt5 界面的实现
引言
在数字化时代文字识别技术OCR在众多领域中发挥着重要作用。无论是文档扫描、车牌识别还是实时视频流中的文字提取OCR 技术都能提供高效且准确的解决方案。本文将介绍如何使用 Python 和 PaddleOCR 实现从摄像头捕获视频流并实时识别其中的英文文字同时将结果显示在 PyQt5 界面中。
技术栈
PaddleOCR百度开源的 OCR 工具支持多种语言的文字识别。OpenCV用于图像处理和视频流操作。PyQt5用于创建图形用户界面GUI。Python作为主要编程语言。
环境准备
在开始之前确保你的环境中安装了以下必要的库
pip install paddlepaddle paddleocr opencv-python PyQt5实现步骤
1. 创建 PyQt5 界面
首先我们需要创建一个简单的 PyQt5 界面用于显示摄像头视频流和识别结果。界面包含一个视频显示区域、一个文本显示区域和一个控制按钮。
文件 1untitled6.py
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file untitled6.ui
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName(MainWindow)MainWindow.resize(1273, 877)self.centralwidget QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName(centralwidget)# 创建一个 QLabel 用于显示摄像头视频流self.label QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(240, 60, 501, 261))self.label.setText()self.label.setObjectName(label)# 创建一个 QPushButton 用于控制摄像头的开关self.pushButton QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(450, 490, 93, 51))self.pushButton.setObjectName(pushButton)# 创建一个 QTextEdit 用于显示 OCR 识别结果self.textEdit QtWidgets.QTextEdit(self.centralwidget)self.textEdit.setGeometry(QtCore.QRect(973, 6, 301, 581))self.textEdit.setObjectName(textEdit)MainWindow.setCentralWidget(self.centralwidget)self.menubar QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 1273, 26))self.menubar.setObjectName(menubar)MainWindow.setMenuBar(self.menubar)self.statusbar QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName(statusbar)MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate(MainWindow, OCR Camera))self.pushButton.setText(_translate(MainWindow, 打开))2. 实现主程序逻辑
接下来我们实现主程序逻辑包括初始化 PaddleOCR、捕获摄像头视频流、进行 OCR 识别并将结果显示在 PyQt5 界面中。
文件 2ocrCap.py
from paddleocr import PaddleOCR
import cv2
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QMessageBoxfrom untitled6 import Ui_MainWindow # 导入UI类import sysclass PyQtMainEntry(QMainWindow, Ui_MainWindow):def __init__(self):super().__init__()self.setupUi(self)# 初始化 PaddleOCR设置为英文识别self.ocr PaddleOCR(use_angle_clsTrue, use_gpuTrue, show_logFalse,det_model_diren_PP-OCRv3_det_infer,rec_model_diren_PP-OCRv3_rec_infer,cls_model_dirch_ppocr_mobile_v2.0_cls_slim_infer,langen)# 初始化摄像头self.camera1 cv2.VideoCapture(0)self.is_camera_opened Falseself._timer QtCore.QTimer(self)self._timer.timeout.connect(self._queryFrame)self._timer.setInterval(30)self.pushButton.clicked.connect(self.slot1)def slot1(self):# 控制摄像头的开关self.is_camera_opened not self.is_camera_openedif self.is_camera_opened:self.pushButton.setText(关闭)self._timer.start()else:self.pushButton.setText(打开)self._timer.stop()def _queryFrame(self):# 从摄像头读取一帧ret1, self.frame1 self.camera1.read()if ret1:# 调整帧大小self.frame11 cv2.resize(self.frame1, (640, 480))qimage cv2.cvtColor(self.frame11, cv2.COLOR_BGR2RGB)qimage QtGui.QImage(qimage.data, qimage.shape[1], qimage.shape[0],QtGui.QImage.Format_RGB888)pixmap QtGui.QPixmap.fromImage(qimage)self.label.setPixmap(pixmap)# 进行 OCR 识别result self.ocr.ocr(self.frame1, clsTrue)if result is not None:a_list [line[1][0] for line in result[0]]zz \n.join(a_list)self.textEdit.setText(zz)else:self.textEdit.setText(未检测到文本)if __name__ __main__:app QtWidgets.QApplication(sys.argv)window PyQtMainEntry()window.show()sys.exit(app.exec_())3. 代码解释 PaddleOCR 初始化 use_angle_clsTrue启用角度分类器用于处理旋转文本。use_gpuTrue使用 GPU 加速提高识别速度。show_logFalse关闭日志输出避免不必要的信息干扰。det_model_dir、rec_model_dir、cls_model_dir指定模型文件路径。langen设置识别语言为英文。 视频流捕获 使用 cv2.VideoCapture(0) 捕获默认摄像头的视频流。每次循环读取一帧并进行 OCR 识别。 OCR 识别 ocr.ocr(frame, clsTrue)对当前帧进行 OCR 识别返回识别结果。遍历识别结果提取文本框的四个角点并绘制文本框。提取识别的文本内容并在文本框左上角位置显示。 显示结果 使用 cv2.imshow 显示处理后的视频帧。按下 ‘q’ 键退出程序并释放摄像头资源。
4. 运行程序
最后运行程序并查看效果
python ocrCap.py总结
通过上述步骤我们成功地实现了一个从摄像头捕获视频流并实时识别其中英文文字的程序并将结果显示在 PyQt5 界面中。这个项目不仅可以用于学习和研究还可以应用于实际场景如实时文档扫描、车牌识别等。希望这篇文章能帮助你更好地理解和应用 OCR 技术。