基于flask+opencv+sklearn+tensorflow的人脸识别系统(一)

近年以来,人工智能技术飞速发展,其主要分为鉴别和生成两个方面,其中人脸识别技术是其鉴别技术的重要分支,本文详细讲解使用opencv+sklearn+tensorflow技术,实现人脸识别的学习性项目。

一、系统功能分析

本项目具体功能模块如下所示:

1、采样样本照片

调用本地计算机摄像头采集照片作为样本,设置使用快捷键进行采样和取样,一次性可以多张照片,采样照片越多,人脸识别的成功率越高。

2、图片处理

将采集到原始图像转化为标准数据文件,即数据集。

3、深度学习

创建深度学习模型,学习训练、将训练结果保存为".h5"文件.

4、人脸识别

使用训练所得的模型实现人脸识别功能,即可以从本地摄像头识别,还可从网络摄像头识别。

二、系统流程分析

项目实现的流程如下所示:

三、技术分析

项目主要用到以下的框架:

(1)Flask

典型的Python Web开发框架

(2)opencv-Python

它是OpenCV的Python接口,一个开源发行的跨平台计算机视觉库,轻量级且高效(由一系列C函数和少量C++类构成),提供Python,Rupy,MATLAB等语言的接口,实现图像处理和计算机视觉方面的通用算法。

(3)sklearn

机器学习中常用第三方模块,对常用机器学习方法进行封装,包括回归、降维、分类、聚类等方法。

(4)tensorflow

TensorFlow是一个由Google Brain团队开发的开源机器学习框架。最初是作为Google内部工具而开发的,但随后在2015年被开源,以便更广泛的社群能够利用和贡献于这个框架。TensorFlow支持从研究到生产的全面工作流程,包括模型设计、训练、优化和部署。

四、框架安装

安装以上框架需要使用以下命令:

pip install flask   //安装Flask框架

pip install opencv-python  //安装opencv-python框架

pip install scikit-learn  //安装sklearn框架

pip install tensorflow //安装tensoflow框架

五、照片样本采集

样本采集模块getCameraPics.py基本摄像头采集视频流中的数据,截取人脸照片作为样本并存储。具体代码如下:


import os
import cv2
import random
import numpy as np
from tensorflow.python.keras.utils import np_utils
from keras.models import Sequential,load_model
from keras.layers import Dense,Activation,Convolution2D,MaxPooling2D,Flatten,Dropout
from sklearn.model_selection import train_test_split

def cameraAutoForPictures(saveDir='data/'):
    "调用计算机摄像头来自动获取图片"
    if not os.path.exists(saveDir):
        os.makedirs(saveDir)
    count=1
    cap=cv2.VideoCapture(0)
    width,height,w=640,480,360
    cap.set(cv2.CAP_PROP_FRAME_WIDTH,width)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT,height)
    crop_w_start=(width-w)//2
    crop_h_start=(height-w)//2
    print('width:',width)
    print('height:',height)
    while True:
        ret,frame=cap.read()
        frame=frame[crop_h_start:crop_h_start+w,crop_w_start:crop_w_start+w]
        frame=cv2.flip(frame,1,dst=None)
        cv2.imshow("capture",frame)
        action=cv2.waitKey(1)&0xff
        if action==ord('c'):
            saveDir=input(u"请输入新的存储目录:")
            if not os.path.exists(saveDir):
                os.makedirs(saveDir)
        elif action==ord('p'):
            cv2.imwrite("%s/%d.jpg" % (saveDir,count),cv2.resize(frame,(224,224),interpolation=cv2.INTER_AREA))
            print(u"%s:%d张图片" % (saveDir,count))
            count+=1
        if action==ord('q'):
                    break
    cap.release()
    cv2.destroyAllWindows()

if __name__=='__main__':
    cameraAutoForPictures(saveDir='data/guan
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值