OpenCV+TensorFlow的人脸识别

本文介绍了如何使用OpenCV收集并创建人脸数据集,然后结合TensorFlow训练卷积神经网络进行人脸识别。项目流程包括:拍摄人脸照片制作数据集、处理lfw数据集、训练模型以及使用模型进行人脸检测和识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说一下项目思路:

1、先用OpenCV拍摄自己人脸1万张,制作成自己的人脸数据集;

2、下载lfw数据集,并利用OpenCV裁剪出人脸;

3、利用卷积神经网络训练数据集,使用TensorFlow框架

4、重新拍摄自己人脸,并利用训练好的模型来检测识别是否是自己的人脸。

接下来直接上代码:

1、(对应标题1)

 

import cv2
import os
import sys
import random

out_dir = './my_faces'
if not os.path.exists(out_dir):
    os.makedirs(out_dir)


# 改变亮度与对比度
def relight(img, alpha=1, bias=0):
    w = img.shape[1]
    h = img.shape[0]
    #image = []
    for i in range(0,w):
        for j in range(0,h):
            for c in range(3):
                tmp = int(img[j,i,c]*alpha + bias)
                if tmp > 255:
                    tmp = 255
                elif tmp < 0:
                    tmp = 0
                img[j,i,c] = tmp
    return img


# 获取分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
face_cascade.load('D:\OpenCV\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml')


# 打开摄像头 参数为输入流,可以为摄像头或视频文件
camera = cv2.VideoCapture(0)

n = 1
while 1:
    if (n <= 10000):
        print('It`s processing %s image.' % n)
        # 读帧
        success, img = camera.read()

        gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        faces = face_cascade.detectMultiScale(gray_img, 1.3, 5)
        for f_x, f_y, f_w, f_h in faces:
            face = img[f_y:f_y+f_h, f_x:f_x+f_w]
            face = cv2.resize(face, (64,64))
            '''
            if n % 3 == 1:
                face = relight(face, 1, 50)
            elif n % 3 == 2:
                face = relight(face, 0.5, 0)
            '''
            face = relight(face, random.uniform(0.5, 1.5), random.randint(-50, 50))
            cv2.imshow('img', face)
            cv2.imwrite(out_dir+'/'+str(n)+'.jpg', face)
            n+=1
        key = cv2.waitKey(30) & 0xff
        if key == 27:
            break
    else:
        break
   

2、

#-*-coding:utf8-*-
import sys
import os
import cv2

input_dir = './lfw'
output_dir = './other_faces'
size = 64

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

#使用opencv自带的harr作为我们的特征提取器
#detector = dlib.get_frontal_face_detector()
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
face_cascade.load('D:\OpenCV\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml')
index = 1
for (path, dirnames, filenames) in os.walk(input_dir):
    for filename in filenames:
        if filename.endswith('.jpg'):
         print('Being processed picture %s' % index)
        img_path = path+'/'+f
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值