毕设-基于人脸识别的教室点名系统(二)

1、人脸图像采集

  • 系统:win10
  • 软件:python3.6+PyCharm

OpenCV(Open source Computer Vision)是一个基于BSD许可发行的跨平台计算机视觉库,OpenCV最初是由英特尔公司Gary Bradski领导的团队开发,第一版于2006年推出。现在由Willow Garage公司维护。

可用于检测和识别人脸,识别对象,分类视频中的人为操作,跟踪相机移动,跟踪移动物体,提取物体的3D模型,从立体相机生成3D点云,将图像拼接在一起来生成高分辨率的整个场景的图像,从图像数据库中找到相似的图像,从使用闪光灯拍摄的图像中去除红眼,跟踪眼球运动,识别景物并建立标记等。

目前OpenCV支持多种编程语言,如c++、Python、Java、MATLAB、Ruby等,可在Windows、Linux、Mac OS X、Android、iOS等不同平台上使用。

OpenCV的Python 官方文档 。

使用OpenCV打开摄像头:

import numpy as np
import cv2

# 参数0指的是第一个摄像头,如果使用第二个摄像头可以输入1来选择
cap = cv2.VideoCapture(0)

while(True):
    # 一帧一帧获取图片,ret为布尔变量,frame中的是一帧图片
    ret, frame = cap.read()
    # 更改图片大小,可以加快后面人脸检测的速度
    image = cv2.resize(frame, (640, 480))

    # 显示采集到的画面,这里的'frame'是显示窗口的标题
    cv2.imshow('frame',image)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 关闭摄像头
cap.release()
cv2.destroyAllWindows()

2、人脸检测和人脸特征提取

Dlib是一种用C ++编程语言编写的基于BSD许可发行的通用跨平台开源软件库。自从2002年开发以来,Davis King一直是dlib的主要作者。dlib的内容非常丰富,其中涵盖了数据结构、线性代数、机器学习、图像处理、数据挖掘、XML和文本分析、数值优化、贝叶斯网络等方面。在国外,它被广泛应用于学术领域,包括机器人应用,嵌入式设备和大规模高性能计算环境。虽然由C++写成,但是它向Python开放了接口,也就是说可以在Python中直接使用它。

Dlib的python官方文档

Dlib中文学习资料

  • 人脸检测
# dlib自带的人脸检测器,如果改为CNN检测器会更加精确
detector = dlib.get_frontal_face_detector()
cap = cv2.VideoCapture(0)  
while True:
    ret, img = cap.read()
    # 进行人脸检测
    dects = detector(img, 1)
        for i, rect in enumerate(dects):
            # 读取人脸区域坐标
            left, right, top, bottom = rect.left(), rect.right(), rect.top(), rect.bottom()
            # 利用opencv中的函数进行画出人脸方框
            cv2.rectangle(img, (left, top), (right, bottom), (255, 0, 0), 2)

    cv2.imshow('img', img)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
  • 人脸特征提取
    未完待续……

你可能感兴趣的:(人脸识别)