使用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