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. 第二章 Linux常用命令

    1.命令基础 命令格式:  命令名  [选项] [参数1] [参数2] 命令必须小写,命令正常执行后返回一个0,表示执行成功,如果执行出错,就反悔一个非零值 2.简单的几个命令  who:列出所有正在 ...

  2. java线程共享受限资源 解决资源竞争 thinking in java4 21.3

    java线程共享受限资源 解决资源竞争  具体介绍请參阅:thinking in java4 21.3 thinking in java 4免费下载:http://download.csdn.net/ ...

  3. Crytek的幕后花絮

    无论是哪种公司规模和状态.Xsolla都能够为其提供定制化的服务.我们提供定制化的技术集成,而不是提供一系列的解决方式.由于我们致力于满足每个合作伙伴的需求.整套的解决方式还存在着一系列的潜在隐患,我 ...

  4. 图像几何变换(geometric transformation)

    1. imwarp B = imwarp(A,tform) demo I = imread('cameraman.tif'); tform = affine2d([1 0 0; .5 1 0; 0 0 ...

  5. Square roots

    Loops are often used in programs that compute numerical results by starting with an approximate answ ...

  6. 系统丢失的DLL文件问题根源解决(纯净官网下载放心)(图文详解)(博主推荐)

    导言 最近,身边的朋友们,问我,他电脑的win10系统里 mfc110.dll 丢失. 其他的系统文件丢失修复,是一样的步骤. 现象 大家也许,都会有这么一个习惯,动不动则就去百度上搜索. 其实啊,这 ...

  7. Android——PullToRefresh自动刷新

    需求:强制刷新 方法一: PullToRefreshListView本身提供了一个setRefreshing()接口,调用该接口会自动触发下拉刷新的操作(前提是支持下拉刷新).按照一般的操作我们直接在 ...

  8. GoldenGate 进程

    GoldenGate进程 Manager进程 Manager进程是GoldenGate的控制进程,运行在源端和目标端上.它主要作用有以下几个方面:启动.监控.重启Goldengate的其他进程,报告错 ...

  9. Futures and promises

    In computer science, future, promise, delay, and deferred refer to constructs used for synchronizing ...

  10. div的padding和margin

    原div一和div二的位置 增大div二的margin-left 增大div二的padding-top