Python + OpenCV 实现简单的人脸识别
2017-05-19 17:53
916 查看
前言
人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫做人像识别、面部识别。———-摘自百度百科
说明
环境:Ubuntu16.04语言: Python
依赖:OpenCV+matplotlib
加载人脸模型
在我们安装OpenCV好以后,在目录下会有很多的xml文件。那些文件就是训练好的haar特征(我也不晓得哈儿特征怎么来的,刚开始会用里面的人脸,耳朵,眼睛等特征就好)模型。这里的模型是xml文件,opencv先加载模型,在通过模型去提取人脸区域,核心方法为:cv2.CascadeClassifier()
# 默认值 # 这个xml是人脸模型 model_face = '/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml' ## face model def get_model_type(model_name): if not(model_face): return cv2.CascadeClassifier(model_face) return cv2.CascadeClassifier(model_name)
核心(提取特征区域)
使用加载好的模型去提取图像中可能存在的人脸区域,返回一个脸部区域faces集合(人脸矩形的左上、右下顶点坐标),faces记录了人脸的相对位置(x,y,width,height)。核心函数:detectMultiScale()face_cascade = get_model_type(face_model) #加载模型 print image_name img = cv2.imread(image_name) # 读取图片 min_h = int(max(img.shape[0] / min_height_dec, min_height_thresh)) min_w = int(max(img.shape[1] / min_width_dec, min_width_thresh)) if img.ndim == 3: gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 转灰度 else: gray = img # 核心中的核心 faces = face_cascade.detectMultiScale(gray, 1.3, minNeighbors=5, minSize=(min_h, min_w))
如果存在的话,这样就可以找到了
标记保存
所谓标记就是在人脸区域框出来,再保存文即可。## 画框 def draw_rect(img, x, y, w, h): upper_cut = [min(img.shape[0], y + h + FACE_PAD), min(img.shape[1], x + w + FACE_PAD)] lower_cut = [max(y - FACE_PAD, 0), max(x - FACE_PAD, 0)] cv2.rectangle(img, (lower_cut[1], lower_cut[0]), (upper_cut[1], upper_cut[0]), (255, 0, 0), 2) for (x, y, width, height) in faces: result.append((x, y, x + width, y + height)) draw_rect(img, x, y, width, height) # 画线标记
画框完以后,就是保存了, 怎么保存就不说了,如果不会就看这篇文章 图像处理行业专业级类库OpenCV
结束语
先上个图片(说明:图片来源于百度)上午试了这个例子,感觉还是挺简单的,当然这是最基本的使用,真正使用的时候远远不止这么简单,光一个特征模型训练就得花好的力气,做深度学习的我深有体会;可以说人脸模型就是可以说是一种规则,或者多种规则,人脸识别就是用这个规则去套图像。
示例代码链接github
参考文章
http://blog.csdn.net/yang_xian521/article/details/6973667http://blog.csdn.net/tengxing007/article/details/72510836
http://blog.csdn.net/u012162613/article/details/43523507
http://blog.csdn.net/tengxing007/article/details/54380732
相关文章推荐
- python+opencv实现的简单人脸识别代码示例
- OpenCV + MFC 实现简单人脸识别
- python︱利用dlib和opencv实现简单换脸、人脸对齐、关键点定位与画图
- python调用OpenCV实现人脸识别功能
- 基于python3 OpenCV3实现静态图片人脸识别
- Python调用OpenCV实现人脸识别
- 【图像识别】 Python+Opencv调用摄像头实现人脸识别并保存视频
- 主成分分析 (PCA) 与其高维度下python实现(简单人脸识别)
- python-opencv-人脸识别实现 从图片中扣人脸
- 图像识别 python+opencv的简单人脸识别
- OpenCV + Python 实现人脸识别
- 利用opencv实现简单的人脸识别
- 静态图片人脸识别 OpenCV3,Python3实现
- OpenCV3计算机视觉Python语言实现人脸识别笔记
- python使用opencv实现人脸识别系统
- 【OpenCV】简单的Python实现人脸检测
- python下实现人脸识别(opencv2)
- 图像识别 python+opencv的简单人脸识别
- 25 行 Python 代码实现人脸识别——OpenCV
- python结合opencv实现人脸检测与跟踪