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()


相关文章
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其应用
【9月更文挑战第24天】本文将深入探讨深度学习中的一种重要模型——卷积神经网络(CNN)。我们将通过简单的代码示例,了解CNN的工作原理和应用场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。
30 1
|
14天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第19天】在人工智能的浩瀚星海中,卷积神经网络(CNN)如同一颗璀璨的星辰,照亮了图像处理的天空。本文将深入CNN的核心,揭示其在图像识别领域的强大力量。通过浅显易懂的语言和直观的比喻,我们将一同探索CNN的奥秘,并见证它如何在现实世界中大放异彩。
|
2天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第31天】本文旨在通过浅显易懂的语言和直观的比喻,为初学者揭开深度学习中卷积神经网络(CNN)的神秘面纱。我们将从CNN的基本原理出发,逐步深入到其在图像识别领域的实际应用,并通过一个简单的代码示例,展示如何利用CNN进行图像分类。无论你是编程新手还是深度学习的初学者,这篇文章都将为你打开一扇通往人工智能世界的大门。
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)入门与实践
【8月更文挑战第62天】本文以浅显易懂的方式介绍了深度学习领域中的核心技术之一——卷积神经网络(CNN)。文章通过生动的比喻和直观的图示,逐步揭示了CNN的工作原理和应用场景。同时,结合具体的代码示例,引导读者从零开始构建一个简单的CNN模型,实现对图像数据的分类任务。无论你是深度学习的初学者还是希望巩固理解的开发者,这篇文章都将为你打开一扇通往深度学习世界的大门。
|
9天前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
14天前
|
机器学习/深度学习 人工智能 算法
深度学习中的卷积神经网络(CNN)入门与实践
【9月更文挑战第19天】在这篇文章中,我们将探索深度学习的一个重要分支——卷积神经网络(CNN)。从基础概念出发,逐步深入到CNN的工作原理和实际应用。文章旨在为初学者提供一个清晰的学习路径,并分享一些实用的编程技巧,帮助读者快速上手实践CNN项目。
|
13天前
|
机器学习/深度学习 自动驾驶 TensorFlow
深入理解卷积神经网络(CNN)在图像识别中的应用
【9月更文挑战第20天】本文旨在通过直观的解释和代码示例,向初学者介绍卷积神经网络(CNN)的基本概念及其在图像识别领域的应用。文章将首先解释什么是CNN以及它如何工作,然后通过一个简单的Python代码示例展示如何构建一个基本的CNN模型。最后,我们将讨论CNN在现实世界问题中的潜在应用,并探讨其面临的挑战和发展方向。
32 2
|
13天前
|
机器学习/深度学习 人工智能 算法
深入浅出卷积神经网络(CNN)
【9月更文挑战第20天】在人工智能的璀璨星河中,卷积神经网络(CNN)如同一颗耀眼的星辰,以其独特的魅力照亮了图像处理的天空。本文将带你遨游CNN的宇宙,从其诞生之初的微弱光芒,到成为深度学习领域的超级巨星,我们将一同探索它的结构奥秘、工作原理以及在实际场景中的惊艳应用。你将发现,CNN不仅仅是一段段代码和算法的堆砌,它更是一种让机器“看”懂世界的强大工具。让我们扣好安全带,一起深入CNN的世界,体验技术与创新交织的精彩旅程。
|
4天前
|
存储 安全 网络安全
云计算与网络安全:技术融合下的信息安全新挑战
【9月更文挑战第29天】在数字化浪潮的推动下,云计算服务如雨后春笋般涌现,为各行各业提供了前所未有的便利和效率。然而,随着数据和服务的云端化,网络安全问题也日益凸显,成为制约云计算发展的关键因素之一。本文将从技术角度出发,探讨云计算环境下网络安全的重要性,分析云服务中存在的安全风险,并提出相应的防护措施。我们将通过实际案例,揭示如何在享受云计算带来的便捷的同时,确保数据的安全性和完整性。
|
4天前
|
SQL 安全 算法
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第29天】随着互联网的普及,网络安全问题日益严重。本文将介绍网络安全漏洞、加密技术以及安全意识等方面的内容,帮助读者了解网络安全的重要性,提高自身的网络安全意识。
下一篇
无影云桌面