Python+OpenCV进行人脸识别(调用笔记本摄像头)

最近需要对研究生论文进行开题,我的方向定位为人工智能机器学习-计算机视觉这个方向,所以先做一些小东西来对自己的所选方向有一个大致熟悉!
首先我所用到的工具是 PyCharm+Python3.7.0+OpenCV
Python+OpenCV进行人脸识别(调用笔记本摄像头)_第1张图片
关于工具这里我想说的是我没有像其他博主一样选择Anaconda进行安装,因为我喜欢在pycharm里setting,因为之前在学习遗传算法的时候安装了numpy这个包所以在安装过程中也并没有出现任何的错误(小兴奋一下)!
说一下重要的这个opencv其实下载起来挺大,因为是最新的,4.1版本的,所以应该能有200M以上,是用流量的朋友得小心点,会下载挺长时间。
网上其他博主的代码都是基于 某张图片进行的人脸识别,所以不符合我的基于视频这个需求,所以在查阅大量代码和修改之后得到了现在这个代码:

import cv2

cap = cv2.VideoCapture(0)

face_cascade = cv2.CascadeClassifier(r'haarcascade_frontalface_default.xml')  # 加载人脸特征库

face_cascade.load('C:/Users/23371/Desktop\haarcascade_frontalface_default.xml')

while (True):

    ret, frame = cap.read()  # 读取一帧的图像

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 转灰

    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.15, minNeighbors=5, minSize=(5, 5))  # 检测人脸

    for (x, y, w, h) in faces:

        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)  # 用矩形圈出人脸
    cv2.rectangle(frame, (x, y), (x + h, y + w), (0, 255, 0), 2)
    # 左眼
    cv2.circle(frame, (x + w // 4, y + h // 4 + 30), min(w // 8, h // 8), (0, 255, 0), 2)
    # 右眼
    cv2.circle(frame, (x + 3 * w // 4, y + h // 4 + 30), min(w // 8, h // 8), (0, 255, 0), 2)
    # 嘴巴
    cv2.rectangle(frame,(x + 3 * w // 8, y + 3 * h // 4), (x + 5 * w // 8, y + 7 * h // 8), (0, 255, 0), 2)
    cv2.imshow('Face Recognition', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()  # 释放摄像头

cv2.destroyAllWindows()

人脸特征库haarcascade我是在网上下载的,挺多的,都是训练好的样本,如果大家找不到的话可以点以下链接自己获取嘻嘻(#.#)
链接:https://pan.baidu.com/s/1MkcITHk07gHiRjFQ8V0Kcg
提取码:i4yu
下面给大家看一下运行成果图吧:请自动忽略我肥脸
Python+OpenCV进行人脸识别(调用笔记本摄像头)_第2张图片
看女神Python+OpenCV进行人脸识别(调用笔记本摄像头)_第3张图片
拿到我源码之后有一个需要改动的地方就是你存放人脸特征库的地址,修改之后就可以完美运行了!
接下来一步我目标是插上usb连接一个不用的手机,调用手机的摄像头进行识别。
嗯就这样!over

你可能感兴趣的:(Python+OpenCV进行人脸识别(调用笔记本摄像头))