使用OpenCV简单实现人脸识别

简介

OpenCV是一个非常强大的计算机视觉库,现有的一系列特征检测和特征匹配算法,有很大一部分都已经在OpenCV的库中得以实现,故此我们只需调用OpenCV库中函数即可简单实现人脸识别。

开发环境

版本:Python 3.6 编辑器:PyCharm OpenCV、NumPy 等库

图像读取与灰度化处理

生活中常用的是RGB格式的彩色图片,我们可以使用OpenCV库中的 cv2.imread( ) 函数进行图像的读取,并且此方式读取的图片为numpy.ndarray格式。

import cv2 as cv

# 静态图像读取
img = cv.imread("picture/lena.png")
# 显示读取的图像
cv.imshow("Image",img)
# 窗口等待时间,设置为则一直等待
cv.waitkey(0)

视频流图像的读取同样可以使用OpenCV库中的 VideoCapture( ) 函数实现。创建一个 cap 接口用来接收视频流的信息,它可以是一段视频,也可以是一个摄像头实时捕捉的画面。

import cv2 as cv

# 视频流图像读取
cap = cv.VideoCapture("I:/touch/001.flv")
# 摄像头捕捉
# cap = cv.VideoCapture(0)
# “0”为默认摄像头,若有多个可改变其编号使用不同的摄像头

# 建立循环,以持续输出
while True:
	# 读取视频中的关键帧
	# 其中flag参数是一个布尔值,若读取帧正常则值为“True”;img参数即是当前帧所显示的图像信息
	flag,img = cap.read()
	if not flag:
		print("error")
		break
	cv.imshow("Video",img)
	# 当按键  (空格)触发时退出
	if cv.waitkey(1) & 0xff == ord( ):
		break
# 释放该接口
cap.release()

研究表明,人眼对RGB颜色的敏感度是不同的,其中对绿色最敏感,权值较高,对蓝色最不敏感,权值较低。故灰度化操作的具体公式如下:

import cv2 as cv

img = cv.imread("picture/lena.png")
imgGray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
cv.imshow("Image",img)
cv/imshow("Gray Image",imgGray)
cv.waitkey(0)

人脸检测

人脸识别

总结

经验分享 程序员 微信小程序 职场和发展