结合dlib与OpenCV的视频流人脸检测

dlib的人脸检测精度比OpenCV自带的高很多。因此本文采用dlib的人脸检测器,结合OpenCV视频流的读取方法,演示如何进行视频流的人脸检测。

默认大家已经安装了dlib库和cv2。

# coding=utf-8
import cv2
import dlib


# 初始化dlib人脸检测器
detector = dlib.get_frontal_face_detector()

# 初始化显示窗口
win = dlib.image_window()

# opencv加载视频文件
cap = cv2.VideoCapture('/home/ljx/ImageDatabase/WaterBar.mp4')
# cap = cv2.VideoCapture(0) #加载摄像头

while cap.isOpened():

    ret, cv_img = cap.read()
    if cv_img is None:
        break

    # OpenCV默认是读取为RGB图像,而dlib需要的是BGR图像,因此这一步转换不能少
    img = cv2.cvtColor(cv_img, cv2.COLOR_RGB2BGR)
  
  # 检测人脸
    dets = detector(img, 0)

    print("Number of faces detected: {}".format(len(dets)))
    for i, d in enumerate(dets):
        print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
            i, d.left(), d.top(), d.right(), d.bottom()))

    win.clear_overlay()
    win.set_image(img)
    win.add_overlay(dets)

cap.release()

你可能感兴趣的:(计算机视觉,OpenCV,Python)