Python|超有趣!手把手教你用Python实现实时“人脸检测”( 二 )

  • 可以做的另一件事是使用任何网络摄像头软件来检查网络摄像头是否正常工作 。 你可以在 Ubuntu 中使用“Cheese”来执行这番操作 。
  • 【Python|超有趣!手把手教你用Python实现实时“人脸检测”】这里我们可以看到网络摄像头已正确设置 。 硬件方面就是这些!
    第 2 步:软件设置
    ①安装 Python
    本文中的代码是用 Python 版本 3.5 构建的 。 虽然有多种方法来安装 Python , 但我建议使用 Anaconda , 这是最流行的数据科学 Python 发行版 。
    这是系统中安装 Anaconda 的链接:
    ②安装 OpenCV
    OpenCV(开源计算机视觉)是一个旨在构建计算机视觉应用程序的库 。 它有许多用于图像处理任务的预编写函数 。
    想安装 OpenCV , 对库进行 pip 安装:
    pip3 install opencv-python ③安装 face_recognition API
    最后 , 我们将使用 face_recognition , 这号称是世界上最简单的面向 Python 的人脸识别 API 。
    想安装它 , 请运行下列命令:
    pip install dlib pip install face_recognition 深入了解实现方式
    现在你已设置好了系统 , 终于可以深入了解实际的实现方式 。 首先 , 我们将迅速构建程序 , 然后对其分解以了解我们所做的工作 。
    先创建一个文件 face_detector.py , 然后拷贝如下所示的代码:
    # import libraries import cv2 importface_recognition# Get a reference towebcam video_capture =cv2.VideoCapture("/dev/video1")# Initialize variables face_locations = []while True:# Grab a single frame of videoret, frame = video_capture.read()# Convert the image from BGR color (whichOpenCV uses) to RGB color (which face_recognition uses)rgb_frame = frame[:, :, ::-1]# Find all the faces in the current frameof videoface_locations =face_recognition.face_locations(rgb_frame)# Display the resultsfor top, right, bottom, left inface_locations:# Draw a box around the facecv2.rectangle(frame, (left, top),(right, bottom), (0, 0, 255), 2)# Display the resulting imagecv2.imshow('Video', frame)# Hit 'q' on the keyboard to quit!if cv2.waitKey(1) & 0xFF == ord('q'):break# Release handle tothe webcam video_capture.release() cv2.destroyAllWindows() 然后 , 输入以下命令 , 运行该 Python 文件:
    python face_detector.py 如果一切正常 , 会弹出一个新窗口 , 实时人脸检测在运行中 。
    总结一下 , 这是我们上述代码执行的操作:
    • 首先 , 我们定义了将进行视频分析的硬件 。
    • 此后 , 我们实时捕捉视频 , 逐帧捕捉 。
    • 然后 , 我们处理每帧 , 并提取图像中所有人脸的位置 。
    • 最后 , 我们以视频形式渲染这些帧以及人脸位置 。
    是不是很简单?如果你想了解更具体的细节 , 我已在每个代码部分中包含注释 。 你可以随时返回查看 。
    人脸检测的用例
    乐趣并不仅限于此!我们能做的另一件很酷的事情就是围绕上述代码构建完整的用例 。 而且你无需从头开始 , 我们只要对代码进行几处小小的改动即可 。
    比如说 , 假设你想构建一个基于摄像头的自动系统来实时跟踪说话人的位置 。 根据其位置 , 系统转动摄像头 , 以便说话人始终在视频的中间 。
    我们该如何解决这个问题?第一步是构建识别视频中一个人或多个人的系统 , 并关注说话人的位置 。
    不妨看看我们如何实现这一点 。 为了本文需要 , 我从 Youtube 上下载了一段视频() , 视频中有个人在 2017 年 DataHack 峰会上讲话 。
    首先 , 我们导入必要的库:
    import cv2 importface_recognition


    推荐阅读