import cv2
from make_imge import get_file_name
from train_ph import Model
import os IMAGE_SIZE = 128
if __name__=="__main__":
name = get_file_name("E:\\gender_image")
model = Model()
model.load()
facecas = cv2.CascadeClassifier("C:\\myword\\haarcascade_frontalface_default.xml")
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret,frame = cap.read()
if not ret:
break
gray = cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)
faces = facecas.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=3,minSize=(32,32))
if len(faces)>0:
for face in faces:
x,y,w,h = face
cv2.rectangle(frame,(x-10,y-10),(x+w-10,y+h-10),(0,0,255),2)
          img =frame[x-10:x+w-10,y-10:y+h-10] cv2.imwrite("E:\\photo\\"+str(i)+".jpg",img)

cv2.imshow("face_photo",frame)
k = cv2.waitKey(10)
if k == ord("q"):
break cap.release()
cv2.destroyAllWindows() 思路整理:

写一个截取图片的代码为:

1、创建一个识别人脸的对象

2、创建一个摄像头的对象

3、使用while语句,表示可以读取很多张图片

4、判断摄像头是否初始化正确,利用read函数返回的ret布尔值进行判断

5、这里将图片变为灰度值

6、判断正确,通过detectMuitleScale函数把人脸的信息取下来。使用的是灰度值的图片

7、判断是否截取到图片

8、截取到图片,就将图片的位置信息读取出来。图片是数字信息,每个图片信息都放在列表中

9、可以在人脸的地方画一个矩形,根据知道矩形的对角点就可以画图像。(这里的图象是原图,没有进行灰度值转化的)

10、因为我想要将人脸的这一部分图像截取下来,因此这里我通过人脸坐标截取人脸

11、然后我将每一帧的图片显示出来

12、如果我不想再显示图像的时候,我可以按q结束

13、结束之后,我们就将摄像头对象释放然后销毁所有的窗口

其中每个参数代表的含义:

cv2.CascadeClassifier看参数、用法

Cv2级联分类器:用于检测数字图像的特征

参数:用一个xm文件说明要检测图像特征的某一个部分,用xml文件的地址为参数。检测人脸比较好的参数有:haarcascade_frontalface_alt.xml

cv2.VideoCapture看参数、用法、表示的意义、返回值

视频捕获器:是opencv的一个类、利用摄像头捕获图像

参数:可以是:相机的索引值(0:表示打开本地摄像机、1:标售打开别的摄像机);也可以是视频文件的地址

用法:调用摄像头的时候

返回值:布尔值

注意Cap是cv2.VideoCapture返回的类

Cap.isOpen():表示是否已经初始化摄像头

Cap.read():用法、意义、返回值

返回值:返回两个值:1、ret(布尔值,用来表示读取帧是否成功)2、frame一个三维矩阵(图像的数字信息)

用法:ret可以用来判断图片是否读取成功,frame每一帧图片的矩阵

Face_casade.detectMultilScal():参数的意义、用法、返回值

detectMultilScal为人脸识别器:单单识别人脸

参数:gray,也就是说图片是灰度的,这样比较快速

scaleFacetor:默认值为1.1

minNeighbors:默认值为3.表示联集最小为3,至少有3次重叠检测,我们才认为人脸确实存

Minsize:最小区域

返回值:得到以人脸特征的数字矩阵的列表

能打开摄像头的函数为:cv2.imshow():参数、意义、用法

1、图像宽的名字和每一帧的名字(注意单独的他是不能把摄像头调用出来的,因为它显示的是每一帧的图片,只是因为读取一帧的速度很快而已,速度给了我们错觉)

Cv2.waitkey(delay)函数:参数、作用

作用:不断刷新图像,频率时间为delay,单位为ms

参数:当参数为整数并且大于零是,表示停留多长时间.但参数为0是,表示只显示一帧



实现人脸识别性别之路---opencv的更多相关文章

  1. 实现人脸识别性别之路---open CV将图片显示出来

    import cv2filename='E:\\tensorflow\\bu.jpg'#图片的地址 # face_cascade=cv2.CascadeClassifier('C:\\anconda3 ...

  2. 实现人脸识别性别之路---网页上的video标签

    <video> 元素支持三种视频格式: MP4, WebM, 和 Ogg.但是,不同的浏览器对视频格式的支持也不一致,因此为了让浏览器都适应,我们使用source属性来对视频文件格式定义 ...

  3. 实现人脸识别性别之路---matplotlib之注释

    一.准备数据 利用np.linspace()函数得到一定范围内的数据集 利用2*x+1的公式求出y 二.创建窗口 三.根据具有规律的数据画图 四.调整坐标轴 1.将原本的坐标轴的上轴和右轴去掉,使用基 ...

  4. 实现人脸识别性别之路---matplotlib

    Np.linspace(start,stop,num,endpoint,dtype)函数 1.参数:范围值,在范围值中取到的数值总数.是否包含范围值.类型 2.返回值:返回一维数据 3.在指定的范围内 ...

  5. 实现人脸识别性别之路---try语句的使用

    Try语句 用法:处理异常信息 存在的形式:try-except X-except T...-except-else-finally(其中X T为错误的类型) 表达意思:try语句是执行正常语句,如果 ...

  6. 现实人脸识别性别之路----弄清楚train_test_split函数

    '''train_test_split(trian_data,trian_target,test_size,random_state)各个参数表示的意义:trian_data表示被划分的样本特征集tr ...

  7. opencv实现人脸识别(一)opencv的相关知识了解

    这回进行了人脸识别的项目,对学习过程进行记录. 首先进行的就是一系列环境的配置,如 python3.7的安装, python的IDE  pycharm的安装,然后进行opencv库的安装,可以通过py ...

  8. OpenCV学习记录(二):自己训练haar特征的adaboost分类器进行人脸识别 标签: 脸部识别opencv 2017-07-03 21:38 26人阅读

    上一篇文章中介绍了如何使用OpenCV自带的haar分类器进行人脸识别(点我打开). 这次我试着自己去训练一个haar分类器,前后花了两天,最后总算是训练完了.不过效果并不是特别理想,由于我是在自己的 ...

  9. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表

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

随机推荐

  1. cocos2d_x_01_环境搭建

    终于效果图: Cocos2d-x-3.3 Mac 安装 下载地址: 參考文档:  在线API列表:  Cocos2d-x-3.3 版本号 从配置安装到创建项目都是命令行 官网下载最新版本号Cocos2 ...

  2. 在AutoLyout中动态获得cell的高度 和 autoLyout中的小随笔

    autoLyout中动态获得cell的高度和autoLyout小总结 一.在autoLyout中通过动态的方式来获取cell 的方式呢? 1.       在布局时候要有对于cell中contentV ...

  3. 11.怎样自学Struts2之Struts2验证[视频]

    11.怎样自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pan. ...

  4. ListView实现丰富的列表功能

    ListView实现丰富的列表功能 1.主布局activity_main.xml <?xml version="1.0" encoding="utf-8" ...

  5. 安卓4.3以上版本已经完美支持BLE(英文版)

    Android 4.3 (API Level 18) introduces built-in platform support for Bluetooth Low Energy in the cent ...

  6. 人生之清单(list of life)

    人生要走走停停,想想记记,修修改改,再向前走.国家工程,公平正义,一腔热血,都很容易燃起来,热血起来. 1. 没得选,有得选,怎么办 没得选 原生家庭,自己怎么生,怎样的父母: 遇见谁,会有怎样的对白 ...

  7. SQL 循环30日

    循环30日的统计 大概格式是 with Date as ( select cast(DATEADD(mm, DATEDIFF(mm,,getdate()), ) as datetime) Date u ...

  8. 使用Onedrive

    买了个某捷的大硬盘,于是发现比较坑,非要用云存储才能获得额外200G.于是费了一个多小时.不过学习到了很多. 首先硬盘下会给出对应的exe文件,点击运行就可以. 之后注册希捷的账号,以及微软的账号. ...

  9. animation和transition做动画的区别

    animation做动画,是不需要去触发的,可以定义一开始就执行 transition做动画,是需要人为触发,才能执行的

  10. Bayes++ Library入门学习之熟悉class-Bayesian_filter_base(1)

    在对Bayes++库的名称空间有了一个大概的了解之后,我们开始学习该名称空间下的第一个子类Bayesian_filter::Bayes_filter_base. 该类与其子类的继承关系图如下图所示. ...