Python 3.4下利用OpenCV对摄像头进行面部识别

代码1034 次浏览

综合 Record Video With Python + OpenCV 3 on OSX 和 A Quick Demo on Face Detection With Python and Opencv 3 两篇文章的内容。实现Python 3.4对OpenCV进行面部识别,在Windows 10下成功运行。不得不说,用了OpenCV,那是相当的简单。演示如下:

show.jpg

大半夜的没穿衣服,就拿汤唯演示吧(这话说得怎么有点怪怪的)

运行程序前需要前往Github下载OpenCV库到本地,并进行相应配置。如笔者下载到了C:\并重命名opencv-master为opencv-3.0.0。这一步非常重要,不然会报错。按键Q退出程序。代码如下:

import numpy as np
import cv2


# 模式参数
dir_path = "C:\\opencv-3.0.0\\data\\haarcascades" # 配置OpenCV路径
filename = "haarcascade_frontalface_default.xml" # 识别模式文件
model_path = dir_path + "\\" + filename


#人脸识别
def gface(image):
	# 创建 classifier
	clf = cv2.CascadeClassifier(model_path)

	# 设定灰度
	gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

	# 识别面部
	faces = clf.detectMultiScale(
	    gray,
	    scaleFactor=1.1,
	    minNeighbors=5,
	    minSize=(30, 30),
	    flags=cv2.CASCADE_SCALE_IMAGE
	)

	#print("Found {0} faces!".format(len(faces)))

	# 画方框
	for (x, y, w, h) in faces:
	    cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

	return image


cap = cv2.VideoCapture(0) # 从摄像头中取得视频

# 获取视频播放界面长宽
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH) + 0.5)
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT) + 0.5)

# 定义编码器 创建 VideoWriter 对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Be sure to use the lower case
out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (width, height))

while(cap.isOpened()):
	#读取帧摄像头
    ret, frame = cap.read()
    if ret == True:
    	#输出当前帧
        frame=gface(frame)
        out.write(frame)

        cv2.imshow('My Camera',frame)

        #键盘按 Q 退出
        if (cv2.waitKey(1) & 0xFF) == ord('q'):
            break
    else:
        break

# 释放资源
out.release()
cap.release()
cv2.destroyAllWindows()

相关文章

评论 (1)

紫色

博主,有没有联系方式?邮箱QQ什么的,我最近在做人脸识别的课题,想请教一些问题。

发表评论

提交后需审核,请勿重复提交。