使用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简单实现人脸识别_第1张图片

视频流图像的读取同样可以使用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()

效果图如下:
使用OpenCV简单实现人脸识别_第2张图片
如果想要提取的特征与颜色无关,那么就可将先进行灰度化处理,因为这样能够使图像的结构变得更加简单同时也不会失去主要特征信息,这样可以在很大程度上减少计算量,此外灰度处理还可以提高图像的对比度。

研究表明,人眼对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)

效果图如下:
使用OpenCV简单实现人脸识别_第3张图片

人脸检测

使用OpenCV简单实现人脸识别_第4张图片

人脸识别

总结

写文章比我想象中麻烦,还没的写后面再慢慢补~
我也是初学,欢迎大家与我讨论

你可能感兴趣的:(人脸识别项目,opencv,计算机视觉,python)