【Opencv综合应用】自制训练集的人脸识别1——拍摄10张人脸图片

  • 一:主要步骤
  • 二:代码部分
  • 三:运行结果

疫情期间学校去不了,在家闲着没事,刚好有学校的比赛项目,就趁着机会做一下,顺便学习学习OpenCV
原文转自: https://www.cnblogs.com/fpzs/p/10533485.html.
我的环境与原文不同,我的环境为win10+opencv4.1.0+opencv-contrib4.1.0+VS2017

一:主要步骤

拍摄人脸图片
1、加载人脸检测器
2、打开电脑摄像头,载入视频流,抽取帧,进行灰度化处理
3、识别人脸,采集10张灰度图像并将尺寸变为为92x112保存到文件中(如果想要彩色图像只需要把代码中的imgGray全部改为img即可)

二:代码部分

/****************************************************
拍摄人脸图片:
1、加载人脸检测器
2、打开电脑摄像头,载入视频流,抽取帧,进行灰度化处理
3、识别人脸,采集20张灰度图保存到文件中(如果想要彩色图像只需要把代码中的imgGray全部改为img即可)
*****************************************************/
#include "opencv2/objdetect.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
using namespace cv;int main()
{Mat img;                      //用于存储每一帧的图像Mat imgGray;                  //用于存储灰度图Mat myFace;                   //用于存储我的人脸数据集int count = 1;                //图片计数 CascadeClassifier cascades;   //定义人脸分类器,opencv中的harr Cascadescascades.load("haarcascade_frontalface_alt2.xml"); //加载人脸检测器VideoCapture cap;cap.open(0);                   //打开摄像头,默认的电脑自带摄像头是0//cap.open("E://demo.avi");   //或者打开视频 std::vector<Rect> faces;       //定义容器存储人脸数据//循环10张人脸保存while (1){cap >> img;                //从视频中读取当前帧        cvtColor(img, imgGray, COLOR_BGR2GRAY); //灰度化//检测出图片中的人脸,用vector保存各个人脸的坐标、大小(用矩形表示)到facescascades.detectMultiScale(imgGray, faces, 1.1, 5, 0);for (size_t i = 0; i < faces.size(); i++) {rectangle(img, faces[i], Scalar(0, 255, 0), 1, 8, 0);}//如果检测到人脸if (faces.size() == 1){//如果图片小于等于10张if (count <= 10){Mat faceROI = imgGray(faces[0]);//opencv中resize()函数将识别到的人脸图像自动改变尺寸为92x112resize(faceROI, myFace, Size(92, 112));putText(img, "face_safaearth", faces[0].tl(), FONT_HERSHEY_DUPLEX, 1.2, Scalar(71, 99, 255), 2, LINE_8);//保存到可执行文件同目录下的s41文件夹里,这里保存为pgm格式图片,方便后续操作,也可以根据自己需要修改格式string filename = format("s41/%d.pgm", count);//通过imwrite函数将resize()过后的图片保存到背景数据imwrite(filename, myFace);imshow(filename, myFace);waitKey(100);destroyWindow(filename);count++;}}imshow("frame", img);waitKey(100);}return 0;system("pause");

三:运行结果



可以看到s41文件里已经生成了10张pgm图像,不过因为电脑原因没法查看pgm图像。

下一篇【Opencv综合应用】自制训练集的人脸识别2——制作csv文件

【Opencv综合应用】自制训练集的人脸识别1——拍摄10张人脸图片相关推荐

  1. 【Opencv综合应用】自制训练集的人脸识别2——制作csv文件

    [Opencv综合应用]自制训练集的人脸识别2--制作csv文件 一,准备工作 环境 二,主要步骤 三,代码部分 四,结果 五,总结 一,准备工作 本文参考自: https://www.cnblogs ...

  2. OpenCV中使用Eigenfaces 或 Fisherfaces进行人脸识别

    连接:OpenCV中使用Eigenfaces 或 Fisherfaces进行人脸识别 OpenCV中使用Eigenfaces 或 Fisherfaces进行人脸识别 Translate by Dawn ...

  3. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【六】设计人脸识别的识别类...

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  4. dlib 使用OpenCV,Python和深度学习进行人脸识别 源代码

    请直接访问原文章 dlib 使用OpenCV,Python和深度学习进行人脸识别 源代码 https://hotdog29.com/?p=595 在 2019年7月7日 上张贴 由 hotdog发表回 ...

  5. python模块cv2人脸识别_手把手教你使用OpenCV,Python和深度学习进行人脸识别

    使用OpenCV,Python和深度学习进行人脸识别 在本教程中,你将学习如何使用OpenCV,Python和深度学习进行面部识别.首先,我们将简要讨论基于深度学习的面部识别,包括"深度度量 ...

  6. CV之FR:DIY脚本通过人脸图像得到人脸特征向量并输出多张人脸图片之两两图片之间的距离

    CV之FR:DIY脚本通过人脸图像得到人脸特征向量并输出多张人脸图片之两两图片之间的距离 目录 输出结果 设计思路 实现代码 计算过程 输出结果 设计思路 实现代码 from scipy import ...

  7. CV之FR之MTCNN:基于TF框架利用MTCNN算法检测并对齐人脸图像进(人脸识别/人脸相似度)而得出人脸特征向量从而计算两张人脸图片距离案例应用之详细攻略

    CV之FR之MTCNN:基于TF框架利用MTCNN算法检测并对齐人脸图像进(人脸识别/人脸相似度)而得出人脸特征向量从而计算两张人脸图片距离案例应用之详细攻略 目录 基于TF框架利用MTCNN算法检测 ...

  8. Qt +opencv 通过级联分类器训练的模型进行识别(车辆识别+人脸识别)

    有不对的或更好的方法欢迎交流 一些内容可参照这篇文章:https://blog.csdn.net/m0_64596200/article/details/126748697?spm=1001.2014 ...

  9. OpenCV:使用python-cv2实现Harr+Adaboost人脸识别

    文章目录 Haar特征 计算方式 使用haar模板处理图像 积分图 Adaboost分类器 代码实现 Haar特征 哈尔特征使用检测窗口中指定位置的相邻矩形,计算每一个矩形的像素和并取其差值.然后用这 ...

  10. openCV学习笔记(十二) —— 人脸识别算法(1/3)—— 特征脸 EigenFaces

    一.原理 opencv支持3种人脸识别的算法,分别是: 1.    Eigen Faces    PCA(特征脸方法) 2.    Fisher Faces    LDA(线性判别分析) 3.     ...

最新文章

  1. 基于TensorRT 3的自动驾驶快速INT8推理
  2. CDN 二级回源实现
  3. 福州大学计算机专业排名2018,软科2018年世界一流学科排名发布 福州大学9个学科上榜...
  4. Java8 - 避免代码阻塞的骚操作
  5. Spring boot国际化切换
  6. spring security实现登录验证以及根据用户身份跳转不同页面
  7. java 蓝桥杯算法训练 快速排序
  8. 双稳态电路的两个稳定状态是什么_电子电度表磁保持继电器里面是什么样呢?...
  9. 我的世界工业服务器透视修改,教程/透视镜 - Minecraft Wiki,最详细的官方我的世界百科...
  10. VS2010 快捷键设置,快速编码1
  11. 教你sql查询分析器执行存储过程
  12. 在浏览器上播放虚幻引擎:像素流前端教程
  13. 你绝没看如此详细的PDF去水印教程
  14. oracle 变更字段名称_oracle怎么修改字段名?
  15. 从React专利事件看开源软件许可
  16. Druid 技术白皮书:大数据实时统计分析数据存储
  17. ubuntu20.04 ros 采集velodyne激光雷达数据
  18. linux tmp php文件怎么打开,tmp文件用什么打开
  19. 科研写作——常见句式(十一)
  20. 拉普拉斯算子——matlab

热门文章

  1. linux内核 can总线,基于Linux的PC104总线与CAN总线通信设计
  2. 郝斌老师c语言笔记 TXT,郝斌老师c语言笔记
  3. 《TCP/IP详解》协议卷读书笔记之概述
  4. 利用BP神经网络求解非线性方程组
  5. 计量广义差分操作过程_时间序列计量经济学模型——思维导图
  6. visa卡号生成器 在线_AINLP公众号新增quot;彩虹屁生成器quot;
  7. windows无法格式化u盘_U盘打不开?无法格式化?试试这个方法可能有效!
  8. 批量打印软件导入Excel时如何保留两位小数
  9. 腾讯天天P图负责人、喜马拉雅副总裁、朋友印象创始人等16位大咖齐开讲,关于未来,关于产品...
  10. 电脑打开热点后无法连接到网络