Python系列之三——人脸检测、人脸识别

简介: 之前有利用C++和OpenCv写过人脸识别的系列文章,对于人脸识别的基本理解和步骤流程等基本知识不做反复叙述。比詹小白还要白的童鞋可以查看往期文章进行了解噢

这是关于人脸的又一篇原创!

之前有利用C++和OpenCv写过人脸识别的系列文章,对于人脸识别的基本理解和步骤流程等基本知识不做反复叙述。比詹小白还要白的童鞋可以查看往期文章进行了解噢

1.人脸识别(一)——从零说起

2.人脸识别(二)——训练分类器

3.人脸识别(二)——训练分类器的补充说明

4.人脸识别(三)——源码放送


一、人脸检测      

python版人脸检测基本上可以参照C++版本的程序,根据语法不同进行改写即可。

1.输入为包含人脸的图片时

这种情况较为简单,只是直接使用了opencv库的训练好的人脸检测模型~其代码如下所示:(具体函数和方法和c++情况下一样,不反复叙述)

1#encoding=utf-8
 2import cv2
 3import numpy
 4face_patterns = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')  #加载分类器,在opencv库内
 5sample_image = cv2.imread('image4.jpg')  #这里是当输入为图片而不是摄像头采集时
 6faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=5,minSize=(80, 80))
 7for (x, y, w, h) in faces:
 8    cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2)
 9cv2.imshow('face', sample_image);
10cv2.waitKey(0)
11cv2.destroyAllWindows()


程序将图像中的人脸检测出来并框出来。运行结果如下所示:

45.jpg


2.输入为摄像头实时采集的图像时

这种情况和第一种情况大体类似,唯一的不同在于输入图像输入不来源于静止图片,而是摄像头的实时采集图像。测试效果不进行展示了(怕帅到你们

1#encoding=utf-8
 2import cv2
 3import numpy
 4face_patterns = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')  #加载分类器,在opencv库内
 5camera = cv2.VideoCapture(0) #这里是利用摄像头采集,打开摄像头操作
 6while camera.isOpened:
 7    #利用read方法读取摄像头的某一帧图片
 8    (ok, sample_image) = camera.read() 
 9    if not ok:
10        break
11    faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=5,minSize=(80, 80))
12    for (x, y, w, h) in faces:
13        cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2)
14    cv2.imshow('face', sample_image);
15    if cv2.waitKey(10)&0xFF==ord('q'):#按下q,退出循环
16        break 
17camera.release()
18#cv2.waitKey(0)
19cv2.destroyAllWindows()


二、人脸识别

人脸识别也可以和检测一样参照c++版本的程序,但是学python时候接触到一个很牛*的模块,这里做图片集的人脸识别进行介绍。


首先,这是所谓的niubi模块是face_recognition库模块,该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。


1.模块的安装

face_recognition 的安装真的很拼人品!!linux系统一装就好,windows系统折腾来捯饬去炒鸡费劲!!还好我是python3.6版本,按照网上的一些教程也算是安装好了,(cmake、dlib啥的很难受)。


简单的说,用pip install指令进行安装还是比较容易的。一条指令即可,如果在安装dlib时出错那就可怜你得捯饬一会了~~

pip install face_recognition


2.代码实现

重点有三个,主要如下:

face_recognition.load_image_file

加载训练的对象,这里仅仅是三个类,各类一张图片

face_recognition.face_encodings

对加载好的对象,利用face_recognition中的方法进行特征识别,用于后面分类

face_recognition.compare_faces

将待分类识别的图像按照相同方法进行特征识别,并将其特征与指定对象特征对比,进行判断


以乔布斯、奥巴马和无名为例~

网络异常,图片无法展示
|


代码如下:

1# -*- coding: utf-8 -*-
 2import cv2
 3import face_recognition
 4jobs_image = face_recognition.load_image_file("jobs.jpg");#乔布斯
 5obama_image = face_recognition.load_image_file("obama.jpg");#奥巴马
 6unknown_image = face_recognition.load_image_file("unknown.jpg");#无名人士
 7jobs_encoding = face_recognition.face_encodings(jobs_image)[0]
 8obama_encoding = face_recognition.face_encodings(obama_image)[0]
 9unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
10#重点是:compare_face
11results = face_recognition.compare_faces([jobs_encoding, obama_encoding], unknown_encoding )
12labels = ['jobs', 'obama']
13print('results:'+str(results))
14for i in range(0, len(results)):
15    if results[i] == True:
16        print('The person is:'+labels[i])


代码通俗易懂(python的一大特点~),其运行结果是以文本形式指出识别对象。结果如下:

1>>>results:[False, True]
2>>>The person is:obama
相关文章
|
5月前
|
数据采集 Python
Python实用记录(七):通过retinaface对CASIA-WebFace人脸数据集进行清洗,并把错误图路径放入txt文档
使用RetinaFace模型对CASIA-WebFace人脸数据集进行清洗,并将无法检测到人脸的图片路径记录到txt文档中。
102 1
|
1月前
|
监控 Java 计算机视觉
Python图像处理中的内存泄漏问题:原因、检测与解决方案
在Python图像处理中,内存泄漏是常见问题,尤其在处理大图像时。本文探讨了内存泄漏的原因(如大图像数据、循环引用、外部库使用等),并介绍了检测工具(如memory_profiler、objgraph、tracemalloc)和解决方法(如显式释放资源、避免循环引用、选择良好内存管理的库)。通过具体代码示例,帮助开发者有效应对内存泄漏挑战。
47 1
|
2月前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
62 20
|
2月前
|
XML 机器学习/深度学习 人工智能
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
87 10
|
6月前
|
机器学习/深度学习 数据采集 算法
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
681 1
|
5月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能质量检测与控制
使用Python实现深度学习模型:智能质量检测与控制 【10月更文挑战第8天】
514 62
使用Python实现深度学习模型:智能质量检测与控制
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
使用Python实现智能食品质量检测的深度学习模型
使用Python实现智能食品质量检测的深度学习模型
279 1
|
6月前
|
Docker Python 容器
python检测docker compose文件是否正确
python检测docker compose文件是否正确
|
6月前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
484 5
|
6月前
|
编解码 Python Windows
python有没有包 可以检测 这个视频是否可以播放
python有没有包 可以检测 这个视频是否可以播放

热门文章

最新文章