当前位置: 首页 > news >正文

opencv 机器学习-人脸识别

基本概念

在这里插入图片描述

计算机视觉与机器学习的关系

计算机视觉是机器学习的一种应用,而且是最有价值的应用

人脸识别

  • 哈尔(Haar)级联方法
  • 深度学习方法(DNN)

哈尔(Haar)级联方法

  • Haar是专门为解决人脸识别而推出的
  • 在深度学习还不流行时,Haar已经可以商用

哈尔(Haar)级联方法人脸识别步骤

  • 创建Haar级联器
  • 导入图片并将其灰度化
  • 调用detectMultiScale方法进行人脸识别

detectMultiScale

  • detectMultiScale(img,double scaleFactor=1.1,int minNeighbors=3,…)
import cv2 as cv
import numpy as np

# 第一步,创建Haar级联器
facer = cv.CascadeClassifier(r'C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
# 第二步,导入人脸识别的图片并将其灰度化
img = cv.imread(r"C:\Users\Administrator\Desktop\girl.png")
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)

# 第三步,进行人脸识别
# [[x,y,w,h]]
faces = facer.detectMultiScale(gray, 1.2, 5)

for (x, y, w, h) in faces:
    cv.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
cv.imshow("img", img)
cv.waitKey(0)

在这里插入图片描述

其他部位检测

import cv2 as cv
import numpy as np

# 第一步,创建Haar级联器
facer = cv.CascadeClassifier(r'C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
eye = cv.CascadeClassifier(r'C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_eye.xml')

# 第二步,导入人脸识别的图片并将其灰度化
img = cv.imread('./tt.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

# 第三步,进行人脸识别
# [[x,y,w,h]]
faces = facer.detectMultiScale(gray, 1.2, 5)


i = 0
for (x, y, w, h) in faces:
    cv.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
    roi_img = img[y:y+h, x:x+w]
    eyes = eye.detectMultiScale(roi_img, 1.2, 5)
    for (x, y, w, h) in eyes:
        cv.rectangle(roi_img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    i = i+1
    winname = "fave" + str(i)
    cv.imshow(winname, roi_img)
    cv.waitKey(0)

相关文章:

  • JavaScript的函数
  • java基于springboot+vue基本微信小程序的乒乓球课程管理系统 uniapp小程序
  • 安装数据库中间件——Mycat
  • 爬虫之Scrapy框架
  • 哈工大李治军老师操作系统笔记【23】:内存换出(Learning OS Concepts By Coding Them !)
  • Ubuntu 20.04 设置开机自启脚本
  • Vue2封装评论组件详细讲解
  • java-php-python-springboot校园新闻趣事计算机毕业设计
  • 使用Docker Compose搭建WordPress博客
  • 【Linux篇】第十一篇——动静态库(动静态库的介绍+动静态库的打包与使用)
  • 多任务学习(MTL)--学习笔记
  • 前端性能优化方法与实战01 体系总览:性能优化体系及关键指标设定
  • 小米面试——C++开发岗位
  • 【训练方法】OHEM
  • java毕业设计汽车出租平台源码+lw文档+mybatis+系统+mysql数据库+调试
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • CentOS7 安装JDK
  • Computed property XXX was assigned to but it has no setter
  • exif信息对照
  • js写一个简单的选项卡
  • laravel5.5 视图共享数据
  • PAT A1120
  • scala基础语法(二)
  • spring boot 整合mybatis 无法输出sql的问题
  • Vue UI框架库开发介绍
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 高程读书笔记 第六章 面向对象程序设计
  • 缓存与缓冲
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 我有几个粽子,和一个故事
  • 优化 Vue 项目编译文件大小
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • # 计算机视觉入门
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #pragma data_seg 共享数据区(转)
  • #每日一题合集#牛客JZ23-JZ33
  • #微信小程序:微信小程序常见的配置传旨
  • (3)(3.5) 遥测无线电区域条例
  • (bean配置类的注解开发)学习Spring的第十三天
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)基于IDEA的JAVA基础10
  • (转)使用VMware vSphere标准交换机设置网络连接
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • @AliasFor注解
  • []Telit UC864E 拨号上网
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [c++] C++多态(虚函数和虚继承)