毕业设计:基于CNN做人脸识别

基于CNN做人脸识别

首先,我是考虑,这系统在Windows下做还是在Linux、Ubuntu下做比较好?
然后,我都检测过,Windows下可以用python、anaconda写代码都可以。当然,和在Linux和Ubuntu下使用的库和包肯定也是一样的。目的就在于那种形式,比较简单,这是我的想法。何必给自己添加难度呢?
后来,我是选择在Ubuntu下做人脸识别。至于为什么,简单是一回事,后面还有原因,我会一一讲解的。

我写了一份草图,我这几周分别做哪些事。

搭建环境

  1. 将Ubuntu系统安装好,然后配置环境
    安装啊python、pip
    这里小编给个建议,安装好ubuntu第一步就是把数据源给改了,那样之后下载库或者包的时候会比官方快好多。个人推荐清华的源https://pypi.tuna.tsinghua.edu.cn/simple在这里插入图片描述
    在这里插入图片描述
    重新导入完后
    执行下更新
sudo apt-get update
sudo apt-get upgrade
需要的包的大概有:numpy、opencv-python、keras、scikit-learn、tensorflow、dlib、pandas(有条件可以考虑基于GPU的)以及神经网络所需的各种包及库等等
sudo pip install opencv-python
sudo pip install keras
sudo pip install scikit-learn
sudo pip install tensorflow
sudo pip install dlib
sudo pip install pandas

主要分为五个模块:

1.人脸收集
2.头像提取
3.尺寸变换
4.训练
5.识别

话不多说上代码:
测试摄像头
文件名为:how_to_use_camera.py
这里说明下,小编都是用python来编译的

# OpenCv 调用摄像头
# 默认调用笔记本摄像头

# Author:   coneypo
# Blog:     http://www.cnblogs.com/AdaminXie
# GitHub:   https://github.com/coneypo/Dlib_face_recognition_from_camera
# Mail:     coneypo@foxmail.com

import cv2

cap = cv2.VideoCapture(0)

# cap.set(propId, value)
# 设置视频参数: propId - 设置的视频参数, value - 设置的参数值
cap.set(3, 480)

# cap.isOpened() 返回 true/false, 检查摄像头初始化是否成功
print(cap.isOpened())

# cap.read()
""" 
返回两个值
    先返回一个布尔值, 如果视频读取正确, 则为 True, 如果错误, 则为 False; 
    也可用来判断是否到视频末尾;
    
    再返回一个值, 为每一帧的图像, 该值是一个三维矩阵;
    
    通用接收方法为: 
        ret,frame = cap.read();
        ret: 布尔值;
        frame: 图像的三维矩阵;
        这样 ret 存储布尔值, frame 存储图像;
        
        若使用一个变量来接收两个值, 如:
            frame = cap.read()
        则 frame 为一个元组, 原来使用 frame 处需更改为 frame[1]
"""

while cap.isOpened():
    ret_flag, img_camera = cap.read()
    cv2.imshow("camera", img_camera)

    # 每帧数据延时 1ms, 延时为0, 读取的是静态帧
    k = cv2.waitKey(1)

    # 按下 's' 保存截图
    if k == ord('s'):
        cv2.imwrite("test.jpg", img_camera)

    # 按下 'q' 退出
    if k == ord('q'):
        break

# 释放所有摄像头
cap.release()

# 删除建立的所有窗口
cv2.destroyAllWindows()
python3  how_to_use_camera.py

提取头像
下面的视频自己可以随便找一部,人脸多的。代码的目的就是截取人,为之后收集人脸做铺垫。以下代码中有存在路径,自己注意修改自己文件夹目录在哪。

文件名:capture.py

import cv2
print(cv2.__version__)

# /home/zjipc/Documents


vc = cv2.VideoCapture('D:\picture\mda-ihuh3xjpbi20te2c.MP4' )  # 读入视频文件
c = 1
caps = 0

if vc.isOpened():  # 判断是否正常打开
    rval, frame = vc.read()
    caps = vc.get(7)  # 获取视频总帧数

else:
    rval = False

timeF = int(caps / 30)

timeF = 100  # 视频帧计数间隔频率

i = 1
while rval:  # 循环读取视频帧
    rval, frame = vc.read()
    # print("c="+str(c))
    if (c % timeF == 0):  # 每隔timeF帧进行存储操作
        path = 'D:\picture\pi'  + str(i).zfill(6) + '.jpg'
        print("正在保存:" + path)
        cv2.imwrite(path, frame)  # 存储为图像
        i = i + 1
    c = c + 1
    cv2.waitKey(1)
vc.release()

python3 capture.py

在这里插入图片描述

人脸收集
可以通俗的理解为注

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值