opencv实现人脸识别(二) 人脸图像采集模块
这一步我们开始搭建第一个模块,用来检测到图像中的人脸位置,并将它拍下来保存在指定路径
流程图:
代码实现:
import cv2 def pic(cam):
# 调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2
cam = cv2.VideoCapture(0) # 使用自带的人脸识别分类器, 其中 这个.xml文件是 识别人脸的分类器文件
# 这里我已经把这个文件放在了当前项目目录下
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 输入用户id
face_id = input('\n enter user id:') print('\n Initializing face capture. Look at the camera and wait ...') # count变量记录图片张数
count = 0 while True: # 从摄像头读取图片
# cam.read()按帧读取视频,sucess,img是cam.read()方法的两个返回值。
# 其中sucess是布尔值,如果读取帧是正确的则返回True,
# 如果文件读取到结尾,它的返回值就为False。
# img就是每一帧的图像,是个三维矩阵。
sucess, img = cam.read() # 转为灰度图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 检测人脸
faces = face_detector.detectMultiScale(gray, 1.3, 5) for (x, y, w, h) in faces:
# 4个参数依次是 图像矩阵, 矩形左上角起始坐标,右下角坐标, 矩形边框线的颜色
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0))
count += 1 # 保存图像
cv2.imwrite("D:/FaceData/" + str(face_id) + '.' + str(count) + '.jpg', gray[y: y + h, x: x + w]) cv2.imshow('image', img) # 保持画面的持续。
k = cv2.waitKey(1) if k == 27: # 通过esc键退出摄像
break elif count >= 100: # 得到100个样本后退出摄像
break # 关闭摄像头
cam.release()
cv2.destroyAllWindows() if __name__ == '__main__':
cam = cv2.VideoCapture(0)
pic(cam)
代码中每个函数的作用基本都进行了简略注释,
到现在,我们就在指定的文件夹中有了一定数量的人脸灰度图了。
opencv实现人脸识别(二) 人脸图像采集模块的更多相关文章
- java 虹软ArcFace 2.0,java SDK使用、人脸识别-抽取人脸特征并做比对
java人脸识别 虹软ArcFace 2.0,java SDK使用.人脸识别-抽取人脸特征并做比对 虹软产品地址:http://ai.arcsoft.com.cn/product/arcface.ht ...
- 基于node.js人脸识别之人脸对比
基于node.js人脸识别之人脸对比 Node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O ...
- 使用python3.7和opencv4.1来实现人脸识别和人脸特征比对以及模型训练
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_126 OpenCV4.1已经发布将近一年了,其人脸识别速度和性能有了一定的提高,这里我们使用opencv来做一个实时活体面部识别的 ...
- 干货 | AI人脸识别之人脸搜索
本文档将利用京东云AI SDK来实践人脸识别中的人脸搜索功能,主要涉及到分组创建/删除.分组列表获取.人脸创建/删除.人脸搜索,本次实操的最终效果是:创建一个人脸库,拿一张图片在人脸库中搜索出相似度最 ...
- Python+OpenCV图像处理(十二)—— 图像梯度
简介:图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导. Sobel算子是普通一阶差分,是基于寻找梯度强度.拉普拉斯算子(二阶差分)是基于过零点检测.通过计算梯度,设置阀值, ...
- 百度云人脸识别API人脸对比
from urllib import request import base64 import requests import re import json import urllib import ...
- 百度云人脸识别API人脸库管理
from urllib import request import base64 import requests import re import json import urllib impor ...
- face-api.js 前端人脸识别,人脸检测,登录认证
1.参考face-api.js https://github.com/justadudewhohacks/face-api.js#face-api.js-for-the-browser
- OpenCV图像处理以及人脸识别
OpenCV基础 OpenCV是一个开源的计算机视觉库.提供了很多图像处理常用的工具 批注:本文所有图片数据都在我的GitHub仓库 读取图片并显示 import numpy as np import ...
- OpenCV 和 Dlib 人脸识别基础
00 环境配置 Anaconda 安装 1 下载 https://repo.anaconda.com/archive/ 考虑到兼容性问题,推荐下载Anaconda3-5.2.0版本. 2 安装 3 测 ...
随机推荐
- 如何用 Windows Live Writer 和 Word 2013 分别发表博客到Cnblog 和CSDN
ps CSDN 老是505错误,放弃了 为什么会写这篇 最近写博客在 Cnblog 上面写博客, 发现图片不能复制了直接粘贴上,这对于把博客当随手笔记的人来说无疑非常痛苦.求助于博客园,他们让我用 W ...
- jvm 线程状态
NEW: Just starting up, i.e., in process of being initialized.NEW_TRANS: Corresponding transition sta ...
- linux查看服务安装目录redis
如果用命令 which redis 或者 whereis redis 都找不到安装目录, 可使用以下办法: ps -aux | grep redis 或者ps -ef|grep redis 假如得到 ...
- Linux设备驱动程序 之 中断和锁
中断和锁 1. 硬中断和软中断(包括tasklet和timer)共享数据,硬中断中使用spin_lock/spin_unlock,软中断中使用spin_lock_irq/spin_unlock_irq ...
- ccf 201803-2 碰撞的小球(Python)
问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒. 当小球到达线 ...
- js获取本地ip
function getUserIP(onNewIP) { // onNewIp - your listener function for new IPs //compatibility for fi ...
- dnspy使用技巧
打开dnspy,调试–>附加到进程–>选择相应的进程ID–>附加(支持同时附加多个进程) 调试–>窗口–>模块–>搜索要调试的程序集–>双击(这一步很重要, ...
- x86 linux下如何交叉编译?
答: 需要首先指定两个环境变量CROSS_COMPILE和ARCH 如交叉编译arm64的程序: export CROSS_COMPILE="aarch64-linux-gnu-" ...
- kotlin函数的参数和返回值
fun main(arg: Array<String>) { val asList = asList(, , , , , ) println(asList) } fun <T> ...
- mongo 4.2版本注意事项
参考文章: 4.0的安装 https://blog.csdn.net/qq_26896281/article/details/81203687 MongoDB4.0.0 远程连接及用户名密码认证登陆配 ...