1.Opencv简介
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。——来自百度词条
2.python 安装Opencv库
pip install cv2
1 1pip install cv2
3.开始前的准备:
3.1 准备一张图片 网上随便下载一张3.2 人脸模型数据
安装完cv2后,可直接在本地磁盘中找到 例如:D:\Anaconda\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml
4.开始
"""捕捉图片"""
#导入库
import cv2
#加载图片
img = cv2.imread('timg.jpg')
#加载人脸模型
face=cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
#调整灰度
gray=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#识别人脸
faces=face.detectMultiScale(gray)
#命名窗口
cv2.namedWindow("test")
#显示图片
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('test2',img)
#暂停运行 0代表一直暂停
cv2.waitKey(0)
#关闭所有窗口
cv2.destroyAllWindows()
21 1"""捕捉图片"""2
#导入库3
import cv24
#加载图片5
img = cv2.imread('timg.jpg')6
#加载人脸模型7
face=cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')8
#调整灰度9
gray=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)10
#识别人脸11
faces=face.detectMultiScale(gray)12
#命名窗口13
cv2.namedWindow("test")14
#显示图片15
for (x,y,w,h) in faces:16
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)17
cv2.imshow('test2',img)18
#暂停运行 0代表一直暂停19
cv2.waitKey(0)20
#关闭所有窗口21
cv2.destroyAllWindows()调整灰度是为了减少计算量核心代码:faces=face.detectMultiScale(gray)参数为:需要识别的图片返回值为:人脸识别结果的矩形框(x,y,w,h)
5.运行结果
6.调用摄像头进行人脸识别
"""捕捉视频"""
import cv2
captrue = cv2.VideoCapture(0)
face=cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
cv2.namedWindow('人脸识别')
while True:
ref,frame=captrue.read()
gray=cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)
faces=face.detectMultiScale(gray)
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('人脸',frame)
if cv2.waitKey(5) & 0xFF==ord('q'):
break
captrue.release()
cv2.destroyAllWindows()
16 1"""捕捉视频"""2
import cv23
captrue = cv2.VideoCapture(0)4
face=cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')5
cv2.namedWindow('人脸识别')6
while True:7
ref,frame=captrue.read()8
gray=cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)9
faces=face.detectMultiScale(gray)10
for (x,y,w,h) in faces:11
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)12
cv2.imshow('人脸',frame)13
if cv2.waitKey(5) & 0xFF==ord('q'):14
break15
captrue.release()16
cv2.destroyAllWindows()调用摄像头识别的原理和识别图片是一样的,只是通过读取每一帧图片,识别结果后在展示出来罢了。
7.总结
以上是人脸识别的小例子,内容其实很少。核心流程为:载入模型 → 载入图片 → 识别图片 → 展示图片来自为知笔记(Wiz)