Keras之CNN:基于Keras利用cv2建立训练存储卷积神经网络模型(2+1)并调用摄像头进行实时人脸识别

简介: Keras之CNN:基于Keras利用cv2建立训练存储卷积神经网络模型(2+1)并调用摄像头进行实时人脸识别

输出结果

image.png

设计思路

image.png


核心代码

# -*- coding:utf-8 -*-

import cv2

from train_model import Model

from read_data import read_name_list

from timeit import default_timer as timer  ### to calculate FPS

class Camera_reader(object):

   def __init__(self):

       self.model = Model()

       self.model.load()

       self.img_size = 128

   def build_camera(self):

       face_cascade = cv2.CascadeClassifier('F:\\Program Files\\Python\\Python36\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_alt.xml')

#         print(face_cascade) #输出<CascadeClassifier 000002240244CC70>

       name_list = read_name_list('F:\\File_Python\\Python_example\\face_recognition_name\\After_cut_picture')

#         print(name_list)

       cameraCapture = cv2.VideoCapture(0)  

     

       success, frame = cameraCapture.read()  

       while success and cv2.waitKey(1) == -1:  

            success, frame = cameraCapture.read()

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

            faces = face_cascade.detectMultiScale(gray, 1.3, 5)

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

                ROI = cv2.resize(ROI, (self.img_size, self.img_size), interpolation=cv2.INTER_LINEAR)

                label,prob = self.model.predict(ROI)  

                if prob >0.7:  

                    show_name = name_list[label]

                else:

                    show_name = 'Stranger'

                cv2.putText(frame, show_name, (x, y - 20), cv2.FONT_HERSHEY_SIMPLEX, 1, 255, 2)  

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

            cv2.imshow("Camera", frame)

       cameraCapture.release()  

       cv2.destroyAllWindows()  

   def detect_video(self):

       face_cascade = cv2.CascadeClassifier('F:\\Program Files\\Python\\Python36\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_alt.xml')

     

       name_list = read_name_list('F:\\File_Python\\Python_example\\face_recognition_name\\After_cut_picture')

       video = cv2.VideoCapture(video_path)  ### TODO: will video path other than 0 be used?

       success, frame = video.read()

       accum_time = 0

       curr_fps = 0

       fps = "FPS: ??"  #fps = "FPS: ??"

       prev_time = timer()

     

       while success and cv2.waitKey(1) == -1:

           success, frame = video.read()

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

           faces = face_cascade.detectMultiScale(gray, 1.3, 5)

         

           curr_time = timer()

           exec_time = curr_time - prev_time

           prev_time = curr_time

           accum_time = accum_time + exec_time

           curr_fps = curr_fps + 1    #1  

           if accum_time > 1:

               accum_time = accum_time - 1   #1

               fps = "FPS: " + str(curr_fps)

               curr_fps = 0   #0    

             

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

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

                ROI = cv2.resize(ROI, (self.img_size, self.img_size), interpolation=cv2.INTER_LINEAR) #cv2.INTER_LINEAR图像尺寸变换的方法,默认的双线性插值

                label,prob = self.model.predict(ROI)

             

                if prob >0.7:    

                    show_name = name_list[label]

                else:

                    show_name = 'Stranger'

                cv2.putText(frame, show_name, (x, y - 20), cv2.FONT_HERSHEY_SIMPLEX, 1, 255, 2)  

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

           cv2.namedWindow("result", cv2.WINDOW_NORMAL)

           cv2.imshow("result",frame)

     

if __name__ == '__main__':

   camera = Camera_reader()

   camera.build_camera()

#     video_path='F:/File_Python/Python_example/YOLOv3_use_TF/RunMan1.mp4'

#     camera.detect_video()


相关文章
|
7月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
8月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
545 2
|
8月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
208 8
|
8月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
904 2
|
SQL 监控 安全
网络安全与信息安全:漏洞、加密与安全意识
随着互联网的迅猛发展,网络安全和信息安全问题日益受到关注。本文深入探讨了网络安全漏洞、加密技术以及提高个人和组织的安全意识的重要性。通过分析常见的网络攻击手段如缓冲区溢出、SQL注入等,揭示了计算机系统中存在的缺陷及其潜在威胁。同时,详细介绍了对称加密和非对称加密算法的原理及应用场景,强调了数字签名和数字证书在验证信息完整性中的关键作用。此外,还讨论了培养良好上网习惯、定期备份数据等提升安全意识的方法,旨在帮助读者更好地理解和应对复杂的网络安全挑战。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
459 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
347 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
341 10
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。