文章目录

  • 人脸识别
    • 视频捕捉
    • 人脸定位
    • 人脸识别

人脸识别

人脸识别与图像识别的区别在于人脸识别需要识别出两个人的不同点。

视频捕捉

通过OpenCV访问视频捕捉设备(视频头),从而获取图像帧。

视频捕捉相关API:

import cv2 as cv# 获取视频捕捉设备
video_capture = cv.VideoCapture(0)
# 读取一帧
frame = video_capture.read()[1]
cv.imshow('VideoCapture', frame)
# 释放视频捕捉设备
video_capture.release()
# 销毁cv的所有窗口
cv.destroyAllWindows()

案例:

import cv2 as cv
vc = cv.VideoCapture(0)
while True:frame = vc.read()[1]cv.imshow('VideoCapture', frame)if cv.waitKey(33) == 27:break
vc.release()
cv.destroyAllWindows()

人脸定位

哈尔级联人脸定位

import cv2 as cv
# 通过特征描述文件构建哈尔级联人脸识别器
fd = cv.CascadeClassifier('../data/haar/face.xml')
# 从一个图像中识别出所有的人脸区域
#   1.3:为最小的人脸尺寸
#   5:最多找5张脸
# 返回:
#   faces: 抓取人脸(矩形区域)列表 [(l,t,w,h),(),()..]
faces = fd.detectMultiScale(frame, 1.3, 5)
face = faces[0] # 第一张脸
# 绘制椭圆
cv.ellipse(face,                # 图像(l + a, t + b),   # 椭圆心(a, b),            # 半径0,                  # 椭圆旋转角度0, 360,             # 起始角, 终止角(255, 0, 255),        # 颜色2                   # 线宽
)

案例:

import cv2 as cv
# 哈尔级联人脸定位器
fd = cv.CascadeClassifier('../../data/haar/face.xml')
ed = cv.CascadeClassifier('../../data/haar/eye.xml')
nd = cv.CascadeClassifier('../../data/haar/nose.xml')
vc = cv.VideoCapture(0)
while True:frame = vc.read()[1]faces = fd.detectMultiScale(frame, 1.3, 5)for l, t, w, h in faces:a, b = int(w / 2), int(h / 2)cv.ellipse(frame, (l + a, t + b), (a, b), 0, 0, 360, (255, 0, 255), 2)face = frame[t:t + h, l:l + w]eyes = ed.detectMultiScale(face, 1.3, 5)for l, t, w, h in eyes:a, b = int(w / 2), int(h / 2)cv.ellipse(face, (l + a, t + b), (a, b), 0, 0, 360, (0, 255, 0), 2)noses = nd.detectMultiScale(face, 1.3, 5)for l, t, w, h in noses:a, b = int(w / 2), int(h / 2)cv.ellipse(face, (l + a, t + b), (a, b), 0, 0, 360, (0, 255, 255), 2)cv.imshow('VideoCapture', frame)if cv.waitKey(33) == 27:break
vc.release()
cv.destroyAllWindows()

人脸识别

简单人脸识别:OpenCV的LBPH(局部二值模式直方图)

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
import numpy as np
import cv2 as cv
import sklearn.preprocessing as sp
fd = cv.CascadeClassifier('../../data/haar/face.xml')def search_faces(directory):directory = os.path.normpath(directory)faces = {}for curdir, subdirs, files in os.walk(directory):for jpeg in (file for file in filesif file.endswith('.jpg')):path = os.path.join(curdir, jpeg)label = path.split(os.path.sep)[-2]if label not in faces:faces[label] = []faces[label].append(path)return facestrain_faces = search_faces('../../data/faces/training')
codec = sp.LabelEncoder()
codec.fit(list(train_faces.keys()))
train_x, train_y = [], []
for label, filenames in train_faces.items():for filename in filenames:image = cv.imread(filename)gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)faces = fd.detectMultiScale(gray, 1.1, 2,minSize=(100, 100))for l, t, w, h in faces:train_x.append(gray[t:t + h, l:l + w])train_y.append(codec.transform([label])[0])
train_y = np.array(train_y)
# 局部二值模式直方图人脸识别分类器
model = cv.face.LBPHFaceRecognizer_create()
model.train(train_x, train_y)
test_faces = search_faces('../../data/faces/testing')
test_x, test_y, test_z = [], [], []
for label, filenames in test_faces.items():for filename in filenames:image = cv.imread(filename)gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)faces = fd.detectMultiScale(gray, 1.1, 2,minSize=(100, 100))for l, t, w, h in faces:test_x.append(gray[t:t + h, l:l + w])test_y.append(codec.transform([label])[0])a, b = int(w / 2), int(h / 2)cv.ellipse(image, (l + a, t + b),(a, b), 0, 0, 360,(255, 0, 255), 2)test_z.append(image)
test_y = np.array(test_y)
pred_test_y = []
for face in test_x:pred_code = model.predict(face)[0]pred_test_y.append(pred_code)
escape = False
while not escape:for code, pred_code, image in zip(test_y, pred_test_y, test_z):label, pred_label = \codec.inverse_transform([code, pred_code])text = '{} {} {}'.format(label,'==' if code == pred_code else '!=',pred_label)cv.putText(image, text, (10, 60),cv.FONT_HERSHEY_SIMPLEX, 2,(255, 255, 255), 6)cv.imshow('Recognizing...', image)if cv.waitKey(1000) == 27:escape = Truebreak

机器学习 - 人脸识别相关推荐

  1. pca人脸识别python_[机器学习] 用PCA进行人脸识别

    本文会带你详细的分析PCA人脸识别的代码 PCA在人脸识别中有重要的应用,如果想详细了解PCA的原理,可以看我的这篇文章:任妍Carol:[机器学习] 人脸识别的重要方法--PCA​zhuanlan. ...

  2. 人脸识别代码_10行代码实现人脸识别

    什么是人脸识别 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术 ...

  3. python画人脸代码_10行代码实现python人脸识别

    什么是人脸识别 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术 ...

  4. 毕业设计 深度学习 机器视觉 人脸识别系统 - opencv python

    文章目录 0 前言 1 机器学习-人脸识别过程 人脸检测 人脸对其 人脸特征向量化 人脸识别 2 深度学习-人脸识别过程 人脸检测 人脸识别 Metric Larning 3 最后 0 前言

  5. 3d人脸识别算法opencv_10行代码实现人脸识别

    什么是人脸识别 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术 ...

  6. svm rbf人脸识别 yale_实操课——机器学习之人脸识别

    SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法.在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别.分类以及回归分析.在n维空间中找到一个分类超 ...

  7. python人脸识别svd_机器学习-svd实现人脸识别

    加载sklearn中的人脸数据集 from sklearn.datasets importfetch_lfw_people faces= fetch_lfw_people() 执行上面的第二行程序,p ...

  8. 前端机器学习:识别人脸,并在脸颊上画草莓

    2020-04-05 17:56:15 作者 | 前端开发劝退师 责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 最终结果 在线体验:http://www.caomage.com/ind ...

  9. 【机器学习】基于LDA主题模型的人脸识别专利分析

    作者 | Soren Gran 编译 | VK 来源 | Towards Data Science 介绍 作为一名数据科学家,文本数据提出了一个独特的挑战:虽然金融.年龄和温度数据可以立即被注入线性回 ...

最新文章

  1. 写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?
  2. springmvc十六:九大组件
  3. Codeforces Round #482 (Div. 2)
  4. EditText的 焦点事件 setOnFocusChangeListener
  5. leetcode20. 有效的括号
  6. hibernate的lazy的使用
  7. 成为Java流大师–第3部分:终端操作
  8. 易语言微凉模块oracle,跟着微凉学易语言 【简单子类化】
  9. 怎样分析 JAVA 的 Thread Dumps
  10. Let's go home
  11. js中占位符总结积累
  12. 如何处理计算机显示器故障,显示器突然黑屏怎么办?教你这样操作,轻松解决黑屏问题!...
  13. java入门简单小项目_JAVA入门_java项目接入Mysql8.0
  14. BUG记录 —— JSON转对象部分字段丢失
  15. CRM系统提高企业核心竞争力
  16. 盘点7大影视类宝藏公众号,影迷/编导生必备,强烈推荐第3个【覃小龙课堂】
  17. Hangfire使用MySQL出现The Command Timeout expired before the operation completed
  18. 中考考试的指令广播_中考考试指令系统使用的说明.doc
  19. 什么样的人适合搞科研?
  20. 项目4:后台管理的开发和使用(前端)

热门文章

  1. AndroidKiller报.smali文件丢失问题解决(关闭Android Studio的Instant Run)
  2. wifi6连接不上个别wifi
  3. Android网络:开发浏览器(五)——功能完善之保存图片实现
  4. python图片转手绘_python图片转素描软件
  5. 苏格拉底和柏拉图甩手的故事
  6. 求和计算机教案,數列求和教案.doc
  7. 从txt中读取float数据C++
  8. 服务器繁忙 微信 苹果,iOS 9正式放出 服务器繁忙苹果推荐用户早晨更新
  9. 华为手机相机:专利曝光装“单反镜头”
  10. 2022 裁员风潮着实有点大,席卷全球~