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