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

开发者社区> 一个处女座的程序猿> 正文

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java编程——Redis详解
  Redis简介   Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。   Redis 与其他 key - value 缓存产品有以下三个特点:   Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。Redis 优势:性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。丰富的数据类型 –
5 0
Java-Redis笔记
  Redis   1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库   1.1.什么是NOSQL   NoSQL(NoSQL=Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。   随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
6 0
以自动储备池学习机器实现高维场景预测,陈洛南/刘锐团队合作研究登Nature子刊
在实际应用中,仅用近期的短期数据来描述或预测一个复杂系统未来的状态对数据挖掘与分析方法提出了更大的挑战。所以,在本文中,研究者们提出了一种新型 ARNN 框架,它能够把高维空间数据映射到目标变量的未来时间信息,使得通过高维短序列时间序列数据的预测成为可能。
4 0
百度大脑十年丰绩大成:6.0全新发布,具备认知能力的终端虚拟人亮相
「智能时代的操作系统」飞桨和自研 AI 处理器百度昆仑都已就位,产业智能化时代正在到来。
7 0
Apache Spark,Parquet和麻烦的Null
  关于类型安全性的经验教训,并承担过多   介绍   在将SQL分析ETL管道迁移到客户端的新Apache Spark批处理ETL基础结构时,我注意到了一些奇特的东西。 开发的基础结构具有可为空的DataFrame列架构的概念。 乍看起来似乎并不奇怪。 大多数(如果不是全部)SQL数据库都允许列为可空或不可空,对吗? 让我们研究一下在创建Spark DataFrame时,这种看似明智的概念为什么会带来问题。   from pyspark.sql import types   schema=types.StructType([
4 0
C#之数据库操作类
  平时在进行C#开发时,需要对数据库进行操作,下面介绍几种常见的操作数据库的方法:   一、操作类DataAccess   using System;   using System.Collections.Generic;   using System.Linq;   using System.Text;   using System.Data;   using System.Data.SqlClient;   using DevExpress.XtraEditors;   using System.Windows.Forms;   //自己写的解密数据库链接dll,可
5 0
机器人与触觉传感技术的碰撞,一文初探人类与机器人的触觉传感
本文对人类和机器人的触觉传感知识进行了简单的梳理和探讨,并以此为基础给出了两篇论文中的应用实例。
6 0
SpringBoot 如何在日志中增加 trace id 用于链路追踪
SpringBoot 如何在日志中增加 trace id 用于链路追踪
6 0
Java 并发与高并发知识学习
  一、并发与高并发基本概念   并发:   从业务上简单解释就是多个用户(编码层面就是多个线程)共同竞争(修改或读取)一个资源,并发问题更多体现在业务代码操作数据上,例如:秒杀场景,瞬间会有大量用户共同抢购一个商品,这时候如果没有并发控制,则极有可能出现超卖情况,即库存被扣成了负数。   从操作系统以及硬件层面解释并发:有多个线程运行在CPU上,当在单核处理上运行的时候,多个线程在单核处理上交替执行(伪并行),不断的从内存中换入换出,在多核处理器上每个线程会被分配到某一个内核上运行(并行),我觉得更适合叫并行计算。
6 0
Django model字段类型解析
  Model字段认识   V=models.CharField(max_length=None<, **options>)    #varchar   V=models.EmailField()    #varchar   V=models.URLField()    #varchar   V=models.FileField(upload_to=None<, max_length=100, **options>)    #varchar #upload_to指定保存目录可带格式,   V=models.ImageField(upload_to=None<, height_fie
5 0
+关注
一个处女座的程序猿
国内互联网圈知名博主、人工智能领域优秀创作者,全球最大中文IT社区博客专家、CSDN开发者联盟生态成员、中国开源社区专家、华为云社区专家、51CTO社区专家、Python社区专家等,曾受邀采访和评审十多次。仅在国内的CSDN平台,博客文章浏览量超过2500万,拥有超过57万的粉丝。
1701
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载