实现人脸识别性别之路---opencv

import cv2from make_imge import get_file_namefrom train_ph import Modelimport os

IMAGE_SIZE = 128if __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是,表示只显示一帧



原文地址:https://www.cnblogs.com/MyUniverse/p/9495462.html

时间: 2024-10-29 15:58:01

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

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

import cv2filename='E:\\tensorflow\\bu.jpg'#图片的地址 # face_cascade=cv2.CascadeClassifier('C:\\anconda3\\pkgs\\opencv3-3.1.0-py35_0\\Library\etc\\haarcascades\\haarcascade_frontalface_default.xml')'''调用分类器''' img=cv2.imread(filename)#读取照片face_cascade=cv

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

Try语句 用法:处理异常信息 存在的形式:try-except X-except T...-except-else-finally(其中X T为错误的类型) 表达意思:try语句是执行正常语句,如果正常语句中出现错误,查找错误类型并执行,如果没有找到错误类型,执行except语句,然后执行else语句,最后一定执行finally语句 实现代码: if __name__=="__main__": while 1: num_1 = int(input("输入一个数字"

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

<video> 元素支持三种视频格式: MP4, WebM, 和 Ogg.但是,不同的浏览器对视频格式的支持也不一致,因此为了让浏览器都适应,我们使用source属性来对视频文件格式定义 <video>元素的标签的属性.值和作用 属性           值           描述 autoplay     autoplay 如果出现这个属性,则视频加载完之后马上播放 controls      controls  在视频上添加播放(暂停).音量.全屏切换等按钮 height 

人脸识别-性别识别finetune

本文用记录基于Caffe的人脸性别识别过程.基于imdb-wiki模型做finetune,imdb-wiki数据集合模型可从这里下载:https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/. 准备训练环境 (1)准备OS:Ubuntu16.04 (2)安装Nvidia GPU Driver https://www.nvidia.com/Download/index.aspx?lang=en-us (3)安装CUDA https://docs.nv

基于 OpenCV 的人脸识别

基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有 OpenCV 的身影. OpenCV 起始于 1999 年 Intel 的一个内部研究项目.从那时起,它的开发就一直很活跃.进化到现在,它已支持如 OpenCL 和 OpenGL 的多种现代技术,也支持如 iOS

25 行 Python 代码实现人脸识别——OpenCV 技术教程

OpenCV OpenCV 是最流行的计算机视觉库,原本用 C 和 C++ 开发,现在也支持 Python. 它使用机器学习算法在图像中搜索人的面部.对于人脸这么复杂的东西,并没有一个简单的检测能对是否存在人脸下结论,而需要成千上万的特征匹配.算法把人脸识别任务分解成数千个小任务,每个都不难处理.这些任务也被称为分类器. 对于类似于人脸的对象,你或许需要不少于 6000 个分类器,每一个都需要成功匹配(当然,有容错率),才能检测出人脸.但这有一个问题:对于人脸识别,算法从左上角开始计算一个个数据

人脸识别(基于OpenCV)

描述 人脸识别包括四个步骤 人脸检测:定位人脸区域,只关心是不是脸: 人脸预处理:对人脸检测出来的图片进行调整优化: 收集和学习人脸:收集要识别的人的预处理过的人脸,然后通过一些算法去学习如何识别: 人脸识别:识别当前人脸与数据库里的哪个人脸最相似. 人脸检测 OpenCV集成了基于PCA LDA 和LBP的人脸检测器,源文件自带很多各种训练好的检测器.下表是常用的XML文件 上面的XML文件可以检测正面人脸.眼睛或鼻子.检测人脸我采用的是第一个或第二个Harr人脸检测器.识别率比较好. 第一步

人脸识别初探

介绍 目前人脸识别比较成熟,OpenCV也已经把目前主流的人脸识别算法(PCA,Haar,LBP)集成到算法库,并且附带例程和文档.文档链接http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html 小明网友对这篇文档详细说明 http://guoming.me/face-recognition-with-opencv 数据准备 创建自己的CSV文件在官方的文档中是python程序实现的,但有点小小的不足就是只

OpenCV实践之路——人脸识别之一数据收集和预处理

本文由@星沉阁冰不语出品,转载请注明作者和出处. 文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/51386949 微博:http://weibo.com/xingchenbing  前段时间对人脸检测和人脸标记进行了一些尝试:人脸检测(C++/Python)和用Dlib库进行人脸检测和人脸标记.但是检测和识别是不同的,检测解决的问题是图片中有没有人脸:而识别解决的问题是,如果一张图片中有人脸,这是谁的脸.人脸检测可以利用op