原文链接:python使用QT搭建人脸识别客户端,连接串口和摄像头
1. 功能
使用python搭建一个人脸识别的客户端,用来连接窗口和实时捕获人脸,还可以批量加载图像,建立串口输入输出通讯。
2. 环境
windows和linux通用,建议带摄像头和串口的设备,USB连接的摄像头更好。
安装一些必备的包,QT和串口驱动(python3.8.10):
pip install PyQt=5.12
pip install pyserial
3. 导入一些必须的包
import cv2
import argparse
import numpy as np
from PyQt5 import QtWidgets
from PyQt5.QtGui import QImage, QPixmap, QIcon
from PyQt5.QtCore import pyqtSlot, Qt
4. 搭建QT的基本框架
QWidget类是所有用户界面对象的基类。
QWidget继承自QObject类和QPaintDevice类。QObject是所有支持Qt对象模型的对象的基类,QPaintDevice类是所有可以绘制的对象的基类。
几乎所有的部件都继承自QWidget。从理论上来讲,任何继承自QWidget的类的派生类的实例,都可以作为中心窗口部件使用。
def run_face_id_app():
"""
Main function to initiate demo GUI.
"""
parser = argparse.ArgumentParser()
parser.add_argument('--uart_com_port', '-c', type=str, help='com port for UART communication')
args = parser.parse_args()
try:
app = QtWidgets.QApplication([]) # 实例化一个应用对象 , app 就是整个工程
app_window = FaceIdWindow(args.uart_com_port)# 窗口各组件的构建,人脸识别窗口的主函数。
app_window.show()# 让控件在桌面上显示出来。控件在内存里创建,之后才能在显示器上显示出来。
app.exit(app.exec_())# 确保主循环安全退出
except Exception as ex: #pylint: disable=broad-except
template = "An exception of type {0} occurred. Arguments:\n{1!r}"
message = template.format(type(ex).__name__, ex.args)
print(message)
if __name__ == "__main__":
run_face_id_app()