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


相关文章
|
1月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
2月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
201 2
|
2月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
9月前
|
机器学习/深度学习 编解码 自动驾驶
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
366 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
2月前
|
机器学习/深度学习 传感器 数据采集
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
480 0
|
8月前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
|
9月前
|
机器学习/深度学习 数据采集 算法
基于WOA鲸鱼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB 2022a实现时间序列预测,采用CNN-GRU-SAM网络结构,结合鲸鱼优化算法(WOA)优化网络参数。核心代码含操作视频,运行效果无水印。算法通过卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征,全连接层整合输出。数据预处理后,使用WOA迭代优化,最终输出最优预测结果。
|
9月前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目使用MATLAB 2022a实现时间序列预测算法,完整程序无水印。核心代码包含详细中文注释和操作视频。算法基于CNN-LSTM-SAM网络,融合卷积层、LSTM层与自注意力机制,适用于金融市场、气象预报等领域。通过数据归一化、种群初始化、适应度计算及参数优化等步骤,有效处理非线性时间序列,输出精准预测结果。
|
9月前
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
|
8月前
|
机器学习/深度学习 数据采集 算法
基于WOA鲸鱼优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本内容介绍了一种基于CNN-LSTM-SAM网络与鲸鱼优化算法(WOA)的时间序列预测方法。算法运行于Matlab2022a,完整程序无水印并附带中文注释及操作视频。核心流程包括数据归一化、种群初始化、适应度计算及参数更新,最终输出最优网络参数完成预测。CNN层提取局部特征,LSTM层捕捉长期依赖关系,自注意力机制聚焦全局特性,全连接层整合特征输出结果,适用于复杂非线性时间序列预测任务。

热门文章

最新文章