演示视频:

【人脸识别】没想到自己做个人脸识别软件居然这么简单!

树莓派人脸识别代码:

from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
import base64
from aip import AipFace
import Adafruit_SSD1306
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFontclass Display:def __init__(self):self.display = Adafruit_SSD1306.SSD1306_128_64(rst=None)self.display.begin()self.display.clear()width = self.display.widthheight = self.display.heightself.display_draw = Image.new('1', (width, height))self.draw_board = ImageDraw.Draw(self.display_draw)self.draw_board.rectangle((0, 0, width, height), outline=0, fill=0)def DrawBoard(self, x, y, size, text):font = ImageFont.truetype("simsun.ttc", size, encoding="utf-8")self.draw_board.rectangle((x, y, 128, y + size), fill=0)self.draw_board.text((x, y), text, font=font, fill=255)self.display.image(self.display_draw)self.display.display()class Camera:def __init__(self):self.camera = PiCamera()self.camera.resolution = (640, 480)self.camera.framerate = 32def TakePhoto(self):raw_capture = PiRGBArray(self.camera, size=(640, 480))for frame in self.camera.capture_continuous(raw_capture, format="bgr", use_video_port=True):image = frame.array_, buffer = cv2.imencode('.jpg', image)jpg_as_text = base64.b64encode(buffer)return jpg_as_textclass FaceRecognition:def __init__(self):app_id = '19501875'api_key = 'OyFeS0pmGq0Vo2khsaf0nNC7'secret_key = 'PGeTHZ8cQG22uuWx5D3F0v1SGHjGj4PS'self.client = AipFace(app_id, api_key, secret_key)self.img_type = 'BASE64'self.group = '01'def Recognition(self, img):result = self.client.search(str(img, 'utf-8'), self.img_type, self.group)msg = result['error_msg']if msg == 'SUCCESS':name = result['result']['user_list'][0]['user_id']name = bytes().fromhex(name).decode('gbk')score = result['result']['user_list'][0]['score']else:name = ''score = 0return msg, name, scoredef main():display = Display()camera = Camera()face_recognition = FaceRecognition()display.DrawBoard(0, 0, 20, '人脸识别系统!')time.sleep(0.1)while True:img = camera.TakePhoto()msg, name, score = face_recognition.Recognition(img)if msg == 'SUCCESS':# print(name,score)if score >= 80:print('你好 %s !' % name)display.DrawBoard(0, 23, 16, '你好%s!' % name)else:print('我不认识你!')display.DrawBoard(0, 23, 16, '我不认识你!')if msg == 'pic not has face':print('未识别到人脸!')display.DrawBoard(0, 23, 16, '未识别到人脸!')if __name__ == '__main__':main()

人脸录入系统:

from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QThread, QImage, QPixmap, pyqtSignal, QIcon
import sys
from GUI import Ui_MainWindow
import cv2
import base64
from aip import AipFace
import binasciiimage = None
flag = left = top = width = height = 0
name = list_text = ''class Video(QThread):signal = pyqtSignal()def __init__(self):super().__init__()self.cap = cv2.VideoCapture(0)self.qImg = Noneself.img = Nonedef run(self):global image, left, top, width, heightwhile True:_, self.img = self.cap.read()img2 = self.img.copy()cv2.rectangle(img2, (left, top), (left+width, top+height), (255, 255, 255), 2)image = self.imgh, w, c = img2.shapeself.qImg = QImage(img2.data, w, h, w * 3, QImage.Format_RGB888).rgbSwapped()self.signal.emit()class FaceDetection(QThread):flag1 = pyqtSignal()flag2 = pyqtSignal(list)flag3 = pyqtSignal(str)def __init__(self):super().__init__()app_id = '19501875'api_key = 'OyFeS0pmGq0Vo2khsaf0nNC7'secret_key = 'PGeTHZ8cQG22uuWx5D3F0v1SGHjGj4PS'self.client = AipFace(app_id, api_key, secret_key)self.img_type = 'BASE64'self.group = '01'self.buffer = Noneself.video = Video()self.img = Nonedef face_detection(self, img):face = self.client.detect(img, self.img_type)if face['error_msg'] == 'SUCCESS':x = int(face['result']['face_list'][0]['location']['left'])y = int(face['result']['face_list'][0]['location']['top'])w = int(face['result']['face_list'][0]['location']['width'])h = int(face['result']['face_list'][0]['location']['height'])else:x, y, w, h = left, top, width, heightreturn x, y, w, hdef cv2_base64(self, img):_, self.buffer = cv2.imencode('.jpg', img)base64_s = base64.b64encode(self.buffer)base64_st = str(base64_s, 'utf-8')return base64_stdef face_enter(self, img, text):texts = str(binascii.b2a_hex(text.encode('GBK')))[2:-1]self.client.addUser(img, self.img_type, self.group, texts)self.flag1.emit()def face_list(self):global flagnames = []lists = self.client.getGroupUsers(self.group)for li in lists['result']['user_id_list']:names.append(bytes().fromhex(li).decode('gbk'))self.flag2.emit(names)flag = 0def face_test(self, img):result = self.client.search(img, self.img_type, self.group)msg = result['error_msg']if msg == 'SUCCESS':names = result['result']['user_list'][0]['user_id']names = bytes().fromhex(names).decode('gbk')score = result['result']['user_list'][0]['score']else:names = ''score = 0return msg, names, scoredef delete_face(self, text):texts = str(binascii.b2a_hex(text.encode('GBK')))[2:-1]self.client.deleteUser(self.group, texts)def run(self):global image, left, top, width, height, flag, namewhile True:base64_str = self.cv2_base64(image)x, y, w, h = left, top, width, heightleft, top, width, height = self.face_detection(base64_str)if flag == 1:if x != left or y != top or w != width or h != height:self.face_enter(base64_str, name)elif flag == 2:self.face_list()elif flag == 3:msg, names, score = self.face_test(base64_str)if msg == 'SUCCESS':if score >= 70:self.flag3.emit('你好 %s !' % names)else:self.flag3.emit('我不认识你!')if msg == 'pic not has face':self.flag3.emit('未识别到人脸!')elif flag == 4:self.delete_face(list_text)class MainWin(Ui_MainWindow):def __init__(self):self.video = Video()self.video.start()self.detection = FaceDetection()self.detection.start()self.progress = 0def setupUi(self, MainWindow):Ui_MainWindow.setupUi(self, MainWindow)self.video.signal.connect(self.Video)self.pushButton.clicked.connect(self.button1)self.detection.flag1.connect(self.progress_bar)self.pushButton_2.clicked.connect(self.button2)self.detection.flag2.connect(self.face_list)self.pushButton_3.clicked.connect(self.button3)self.detection.flag3.connect(self.face_test)self.pushButton_4.clicked.connect(self.button4)def face_test(self, text):self.label_5.setText(text)def face_list(self, lists):self.comboBox.addItems(lists)def progress_bar(self):global flagself.progress += 5if self.progress == 100:self.pushButton.setEnabled(True)self.pushButton_2.setEnabled(True)self.pushButton_3.setEnabled(True)self.pushButton_4.setEnabled(True)self.label_5.setText('录入完成!')self.progress = 0flag = 0self.progressBar.setProperty("value", self.progress)def button1(self):global flag, nameif self.lineEdit.text() + 'None' != 'None':name = self.lineEdit.text()flag = 1self.pushButton.setEnabled(False)self.pushButton_2.setEnabled(False)self.pushButton_3.setEnabled(False)self.pushButton_4.setEnabled(False)self.label_5.setText('人脸信息录入中!')else:self.label_5.setText('请输入名字!')def button2(self):global flagflag = 2self.comboBox.clear()self.label_5.setText('获取成功!')def button3(self):global flagif flag == 0:flag = 3self.pushButton.setEnabled(False)self.pushButton_2.setEnabled(False)self.pushButton_4.setEnabled(False)self.pushButton_3.setText('停止测试')else:flag = 0self.pushButton.setEnabled(True)self.pushButton_2.setEnabled(True)self.pushButton_4.setEnabled(True)self.pushButton_3.setText('测试')self.label_5.setText('')def button4(self):global flag, list_textflag = 4list_text = self.comboBox.currentText()self.comboBox.clear()self.label_5.setText('删除成功!')def Video(self):self.label.setPixmap(QPixmap(self.video.qImg))if __name__ == '__main__':app = QApplication(sys.argv)app.setWindowIcon(QIcon('./icon.ico'))main = QMainWindow()ui = MainWin()ui.setupUi(main)main.show()sys.exit(app.exec_())

QT生成代码:

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(803, 531)MainWindow.setMinimumSize(QtCore.QSize(803, 531))MainWindow.setMaximumSize(QtCore.QSize(803, 531))self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.progressBar = QtWidgets.QProgressBar(self.centralwidget)self.progressBar.setGeometry(QtCore.QRect(10, 500, 641, 23))self.progressBar.setProperty("value", 0)self.progressBar.setObjectName("progressBar")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(10, 10, 640, 480))self.label.setMinimumSize(QtCore.QSize(640, 480))self.label.setMaximumSize(QtCore.QSize(639, 480))self.label.setText("")self.label.setPixmap(QtGui.QPixmap("C:/Users/wangxin/Desktop/未标题-1.jpg"))self.label.setScaledContents(False)self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(self.centralwidget)self.label_2.setGeometry(QtCore.QRect(660, 30, 41, 16))self.label_2.setObjectName("label_2")self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)self.lineEdit.setGeometry(QtCore.QRect(700, 30, 91, 21))self.lineEdit.setObjectName("lineEdit")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(660, 60, 131, 31))self.pushButton.setObjectName("pushButton")self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_2.setGeometry(QtCore.QRect(660, 140, 131, 31))self.pushButton_2.setObjectName("pushButton_2")self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_3.setGeometry(QtCore.QRect(660, 100, 131, 31))self.pushButton_3.setObjectName("pushButton_3")self.comboBox = QtWidgets.QComboBox(self.centralwidget)self.comboBox.setGeometry(QtCore.QRect(660, 180, 131, 22))self.comboBox.setObjectName("comboBox")self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)self.pushButton_4.setGeometry(QtCore.QRect(660, 210, 131, 28))self.pushButton_4.setObjectName("pushButton_4")self.label_4 = QtWidgets.QLabel(self.centralwidget)self.label_4.setGeometry(QtCore.QRect(660, 250, 72, 15))self.label_4.setObjectName("label_4")self.label_5 = QtWidgets.QLabel(self.centralwidget)self.label_5.setGeometry(QtCore.QRect(660, 270, 121, 21))self.label_5.setText("")self.label_5.setObjectName("label_5")MainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "人脸录入系统"))self.label_2.setText(_translate("MainWindow", "姓名:"))self.pushButton.setText(_translate("MainWindow", "录入人脸数据"))self.pushButton_2.setText(_translate("MainWindow", "获取人脸列表"))self.pushButton_3.setText(_translate("MainWindow", "测试"))self.pushButton_4.setText(_translate("MainWindow", "删除"))self.label_4.setText(_translate("MainWindow", "信息:"))

基于百度智能云的人脸识别系统相关推荐

  1. 基于百度智能云的人脸识别登陆系统

    基于百度智能云的人脸识别登陆系统 设计说明 后端项目结构 前端页面 项目版本1下载 使用说明 项目版本1的Gitee链接 项目版本2--基于人脸对比的登陆系统 项目2下载链接 版本2的Gitee链接 ...

  2. Linux下基于百度智能云平台人脸识别

    Linux下基于百度智能云平台人脸识别 1.百度智能云接口及简介 https://cloud.baidu.com/product/face   接口技术文档: 2.人脸检测属性分析项目示例  硬件平台 ...

  3. QT + 百度智能云之人脸识别

    人脸识别 如果您对百度的API接口还没有一点点了解的话,建议在看本文之前先看一下AI接入指南和这篇. 基于qt+百度智能云API写的一个人脸识别示例,在用户的人脸库中进行搜索,用户需要创建人脸库和注册 ...

  4. 百度智能云-创建人脸识别应用

    网址:百度AI开放平台-全球领先的人工智能服务平台 (baidu.com) 1. 2.点击立即使用创建应用 3.点击公有云API创建应用 4.输入应用名称与描述,完成创建.

  5. 人脸识别——基于百度智能云实现

    百度智能云是百度旗下面向企业.开发者和政府机构的智能云计算服务商,致力于为各行业提供以ABC(人工智能.大数据.云计算)技术为一体的平台服务. 对于开发者而言,灵活利用其提供的大量模块化接口,可快速完 ...

  6. 基于百度智能云api识别验证码

    基于百度智能云api识别验证码 通过调用百度智能云api接口进行验证码识别并输出. 使用baidu-aip模块进行模拟client登录,client.basicgeneral()函数识别图片文字并返回 ...

  7. 人脸识别(1)----百度智能云接入人脸离别识别SDK(离线采集SDK) 开通文字识别服务

    人脸识别(1)----百度智能云接入人脸离别识别SDK(离线采集SDK)&& 开通文字识别服务 1.打开百度智能云的官网,进行登录,https://console.bce.baidu. ...

  8. 基于opencv和pillow实现人脸识别系统(附demo)

    更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn.com p ...

  9. 基于MatLab的PCA降维人脸识别系统(超详细解说)

    (一)基于MatLab的PCA降维人脸识别系统 本次博客内容将详细介绍如何使用MatLab,进行PCA降维来识别人脸.内容参考张铮<精通MatLab数字图像处理与识别>.书中有些内容应该是 ...

最新文章

  1. 取消ssh密钥文件登录_Xshell密钥登入,增加安全
  2. redis源码分析(beta版本)-redis实现的概述逻辑
  3. linux yum安装mysql 5.6_linux yum安装MySQL5.6
  4. Ymodem协议学习笔记
  5. sql盲注特点_SQL注入第二章——access,mssql,oracle
  6. Java机器学习库ML之九交叉验证法(Cross Validation)
  7. 教你如何玩转GitHub
  8. mpython掌控板作品_第1课 Arduino micro:bit 掌控板 创客教育常用的3类主控板
  9. MySQL 重中之重 [ 事物 ]
  10. 《精解Windows8》——2.10 共享
  11. Python数据结构与算法(2.2)——顺序表
  12. Factorization Mechanism
  13. c语言程序设计的例题,C语言程序设计例题与习题--详细介绍
  14. 声音均衡器怎么调好听_【音乐均衡器怎么调好听】五段均衡器怎么调好听_9段均衡器怎么调好听...
  15. android js 弹窗,Android原生代码拦截H5 Web页面中JavaScript弹窗/弹框
  16. 整洁代码--写好注释
  17. Android原生获取经纬度位置信息
  18. 大学教师与大学学生的彼此期望
  19. Identifying App Installations
  20. 生鲜电商平台-优惠券设计与架构

热门文章

  1. 如何向服务器远程传输文件,如何向服务器远程传输文件
  2. ESP8266-Arduino编程实例-ILI9341-TFT LCD驱动(基于TFT_eSPI库)
  3. mybits框架的学习
  4. 【分布式任务调度】二、Elastic-Job详细介绍
  5. 多卡聚合智能融合通信设备疫情检查站视频传输方案
  6. 申请iso27000认证是什么认证?
  7. Vue实例和组件实例
  8. 【Python】Word文档重复字检测程序
  9. SpringCloud Alibaba实战(12:引入Dubbo实现RPC调用)
  10. 用c#输出正九九乘法表_利用C#怎么输出九九乘法表