ITPub博客

首页 > IT职业 > IT生活 > 【项目】Python人脸识别(GUI界面)—— 基于pyopencv

【项目】Python人脸识别(GUI界面)—— 基于pyopencv

IT生活 作者:专注的阿熊 时间:2022-10-26 12:01:27 0 删除 编辑

from PyQt5 import QtCore, QtGui, QtWidgets

import cv2

class Ui_MainWindow(QtWidgets.QMainWindow):

     def __init__(self):

         super(Ui_MainWindow,self).__init__()

     def setupUi(self, MainWindow):

         MainWindow.setObjectName("MainWindow")

         MainWindow.resize(565, 331)

         self.centralwidget = QtWidgets.QWidget(MainWindow)

         self.centralwidget.setObjectName("centralwidget")

         self.pushButton = QtWidgets.QPushButton(self.centralwidget)

         self.pushButton.setGeometry(QtCore.QRect(70, 190, 111, 61))

         self.pushButton.setObjectName("pushButton")

         self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)

         self.pushButton_2.setGeometry(QtCore.QRect(310, 190, 121, 61))

         self.pushButton_2.setObjectName("pushButton_2")

         self.label = QtWidgets.QLabel(self.centralwidget)

         self.label.setGeometry(QtCore.QRect(180, 60, 161, 81))

         self.label.setObjectName("label")

         MainWindow.setCentralWidget(self.centralwidget)

         self.menubar = QtWidgets.QMenuBar(MainWindow)

         self.menubar.setGeometry(QtCore.QRect(0, 0, 565, 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.translate

         MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

         self.pushButton.setText(_translate("MainWindow", " 采集人脸信息 "))

         self.pushButton_2.setText(_translate("MainWindow", " 开始识别 "))

         # self.label.setText(_translate("MainWindow", " 结果: "))

         self.pushButton.clicked.connect(self.b)

         self.pushButton_2.clicked.connect(self.final)

     def b(self):

         print(' 正在调用摄像头! ')

         print(" 输入 'esc' 为退出!!! ")

         faceCascade = 跟单网gendan5.comcv2.CascadeClassifier('haarcascade_frontalface_default.xml')

         cap = cv2.VideoCapture(0)

         cap.set(3, 640)  # set Width

         cap.set(4, 480)  # set Height

         print(" 请输入字母 's' 保存信息!! ")

         while True:

             ret, img = cap.read()

             # 将彩色图转为灰度图

             gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

             faces = faceCascade.detectMultiScale(

                 gray,

                 scaleFactor=1.2,

                 minNeighbors=5

                 ,

                 minSize=(20, 20)

             )

             for (x, y, w, h) in faces:

                 cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

                 roi_gray = gray[y:y + h, x:x + w]

                 roi_color = img[y:y + h, x:x + w]

             cv2.imshow('video', img)

             k = cv2.waitKey(30) & 0xff

             if k == ord('s'):

                 n = input(' 请输入编号: ')

                 cv2.imwrite('./data/jm/' + n + '.jpg', roi_gray)

             if k == 27:

                 break

         cap.release()

         cv2.destroyAllWindows()

         print(" 正在训练!!! ")

         self.train()

     def final(self):

         import face_zhineng.final_face

         face_zhineng.final_face.a()

     def train(self):

         import cv2

         import numpy as np

         import face_zhineng.training

         # 图片路径

         path = './data/jm/'

         faces, ids = face_zhineng.training.getImageAndLabels(path)

         # 获取训练对象

         recognizer = cv2.face.LBPHFaceRecognizer_create()

         recognizer.train(faces, np.array(ids))

         # 保存文件

         recognizer.write('trainer/trainer3.yml')

         print(" 训练完毕!!! ")

if __name__ == '__main__':

     import sys

     app = QtWidgets.QApplication(sys.argv)

     MainWindow = QtWidgets.QMainWindow()

     ui = Ui_MainWindow()

     ui.setupUi(MainWindow)

     MainWindow.show()

     sys.exit(app.exec_())


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946337/viewspace-2920374/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-23

  • 博文量
    410
  • 访问量
    276788