使用 Python做人脸检测

使用Python做人脸检测 #

Date: 2015/6/12

听说Python做机器学习之类的东东非常方便,有大把的库等着我们用。所以接到做人脸识别的任务后,查找了一下,确定了使用Python做东东的方法。
本文只完成了人脸检测工作more

在下面这段代码中,numpy提供了数字运算库,主要用于矩阵的快速运算,cv2是openCV第二版的库,用于图形处理,以及人脸检测,折腾了几下才安装成功了。

import numpy as np
import cv2

# 获得视频输入
cap = cv2.VideoCapture(-1)
while(True):

    # 读取视频帧,ret为读取是否成功,frame是图
    ret, frame = cap.read()

    # 这里是直接将cv2自带的训练结果集读出来,形成分类器
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

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

    # 检测人脸
    faces = face_cascade.detectMultiScale(gray)

    for(x,y,w,h) in faces:
        print (x,y,w,h)
        img = cv2.rectangle(frame, (x,y), (x+w, y+h), (255,0,0), 2)
        frame[0:w,0:h] = frame[x:(x+w),y:(y+h)]

    # 显示
    cv2.namedWindow('frame', cv2.WINDOW_NORMAL)
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 回收资源
cap.release()
cv2.destroyAllWindows()

import numpy as np import cv2

获得视频输入 #

cap = cv2.VideoCapture(-1) while(True):

# 读取视频帧,ret为读取是否成功,frame是图
ret, frame = cap.read()

# 这里是直接将cv2自带的训练结果集读出来,形成分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

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

# 检测人脸
faces = face_cascade.detectMultiScale(gray)

for(x,y,w,h) in faces:
    print (x,y,w,h)
    img = cv2.rectangle(frame, (x,y), (x+w, y+h), (255,0,0), 2)
    frame[0:w,0:h] = frame[x:(x+w),y:(y+h)]

# 显示
cv2.namedWindow('frame', cv2.WINDOW_NORMAL)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

回收资源 #

cap.release() cv2.destroyAllWindows()

其实这么写学不到什么东西,只是知道openCV能这么用了。接下来再好好研究一下算法了。 Categories: python, opencv