pythonopencv人脸检测(如何使用Python,基于OpenCV与Face++实现人脸解锁的功能)

1.如何使用Python,基于OpenCV与Face++实现人脸解锁的功能

Windows 8.1上配置OpenCV 入门的时候配置环境总是一个非常麻烦的事情,在Windows上配置OpenCV更是如此。

既然写了这个推广的科普教程,总不能让读者卡在环境配置上吧。下面用到的文件都可以在 这里 (提取码:b6ec)下载,但是注意,目前OpenCV仅支持Python2.7。

将cv2加入site-packages 将下载下来的 cv2.pyd 文件放入Python安装的文件夹下的 Libsite-packages 目录。就我的电脑而言,这个目录就是 C:Python27Libsite-packages 。

记得不要直接使用pip安装,将文件拖过去即可。安装numpy组件 在命令行下进入到下载下来的文件所在的目录(按住Shift右键有在该目录打开命令行的选项) 键入命令:pipinstallnumpy-1.11.0rc2-cp27-cp27m-win32.whl 如果你的系统或者Python不适配,可以在 这里 下载别的轮子。

测试OpenCV安装 在命令行键入命令:python -c "import cv2" 如果没有出现错误提示,那么cv2就已经安装好了。OpenCV的人脸检测应用 人脸检测应用,简而言之就是一个在照片里找到人脸,然后用方框框起来的过程(我们的相机经常做这件事情) 那么具体而言就是这样一个过程:获取摄像头的图片 在图片中检测到人脸的区域 在人脸的区域周围绘制方框 获取摄像头的图片 这里简单的讲解一下OpenCV的基本操作。

以下操作是打开摄像头的基本操作:#coding=utf8 importcv2# 一般笔记本的默认摄像头都是0 capInput = cv2.VideoCapture(0)# 我们可以用这条命令检测摄像头是否可以读取数据 if not capInput.isOpened(): print('Capture failed because of camera') 那么怎么从摄像头读取数据呢?# 接上段程序# 现在摄像头已经打开了,我们可以使用这条命令读取图像# img就是我们读取到的图像,就和我们使用open('pic.jpg', 'rb').read()读取到的数据是一样的 ret, img = capInput.read()# 你可以使用open的方式存储,也可以使用cv2提供的方式存储 cv2.imwrite('pic.jpg', img)# 同样,你可以使用open的方式读取,也可以使用cv2提供的方式读取 img = cv2.imread('pic.jpg') 为了方便显示图片,cv2也提供了显示图片的方法:# 接上段程序# 定义一个窗口,当然也可以不定义 imgWindowName = 'ImageCaptured' imgWindow = cv2.namedWindow(imgWindowName, cv2.WINDOW_NORMAL)# 在窗口中显示图片 cv2.imshow(imgWindowName, img) 当然在完成所有操作以后需要把摄像头和窗口都做一个释放:# 接上段程序# 释放摄像头 capInput.release()# 释放所有窗口 cv2.destroyAllWindows() 在图片中检测到人脸的区域 OpenCV给我们提供了已经训练好的人脸的xml模板,我们只需要载入然后比对即可。# 接上段程序# 载入xml模板 faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')# 将图形存储的方式进行转换 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 使用模板匹配图形 faces = faceCascade.detectMultiScale(gray, 1.3, 5) print(faces) 在人脸的区域周围绘制方框 在上一个步骤中,faces中的四个量分别为左上角的横坐标、纵坐标、宽度、长度。

所以我们根据这四个量很容易的就可以绘制出方框。# 接上段程序# 函数的参数分别为:图像,左上角坐标,右下角坐标,颜色,宽度 img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) 成果 根据上面讲述的内容,我们现在已经可以完成一个简单的人脸辨认了:#coding=utf8 importcv2 print('Press Esc to exit') faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') imgWindow = cv2.namedWindow('FaceDetect', cv2.WINDOW_NORMAL) defdetect_face(): capInput = cv2.VideoCapture(0) # 避免处理时间过长造成画面卡顿 nextCaptureTime = time.time() faces = [] if not capInput.isOpened(): print('Capture failed because of camera') while 1: ret, img = capInput.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) if nextCaptureTime 使用Face++完成人脸辨识 第一次认识Face++还是因为支付宝的人脸支付,响应速度还是非常让人满意的。

现在只需要免费注册一个账号然后新建一个应用就可以使用了,非常方便。他的官方网址是 这个 ,注册好之后在 这里 的我的应用中创建应用即可。

创建好应用之后你会获得API Key与API Secret。Face++的API调用逻辑简单来说是这样的:上传图片获取读取到的人的face_id 创建Person,获取person_id(Person中的图片可以增加、删除) 比较两个face_id,判断是否是一个人 比较face_id与person_id,判断是否是一个人 上传图片获取face_id 在将图片通过post方法上传到特定的地址后将返回一个json的值。

如果api_key, api_secret没有问题,且在上传的图片中有识别到人脸,那么会存储在json的face键值下。#coding=utf8 importrequests# 这里填写你的应用的API Key与API Secret API_KEY = '' API_SECRET = ''# 目前的API网址是这个,你可以在API文档里找到这些 BASE_URL = '?highlight=cascadeclassifier classfier=cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml') # 加载分类器,分类器位置可以自行更改,注意这里用opencv库文件夹下的绝对路径也不行,在库文件夹里找到这个文件复制到这个程序的同目录下,参考:/GAN_player/article/details/77993872 color=(0,225,0)#人脸框的颜色,采用rgb模型,这里表示g取255,为绿色框 while cap.isOpened(): ok,frame=cap.read() # 读取一帧数据,ok表示摄像头读取状态,frame表示摄像头读取的图像矩阵mat类型 if not ok: break # 灰度化在后面检测时可以降低计算量,cvtColor changing colorspace gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#图像灰度化,cv2.cvtColor(input_image, flag) where flag determines the type of conversion.这一部分代码在前面捕获实时视频流的基础上加载了OpenCV所提供的用于对象检测的分类器,注意分类器文件haarcascade_frontalface_alt2.xml可以在OpenCV包文件夹下找到,要放到当前工作目录下才能使用,这个分类器就是用来探测人脸。

pythonopencv人脸检测

转载请注明出处编程代码网 » pythonopencv人脸检测(如何使用Python,基于OpenCV与Face++实现人脸解锁的功能)

资讯

pythonrequests解析(pythonrequests库怎么解析响应)

阅读(14)

本文主要为您介绍pythonrequests解析,内容包括pythonrequests库怎么解析响应,python怎么解析requests.session.get,python:Request的函数是什么作用。Requests 是使用 Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为人类着想

资讯

pythonnumpy函数库(pythonnumpy有什么用)

阅读(10)

本文主要为您介绍pythonnumpy函数库,内容包括python有numpy函数库么,python有numpy函数库么,python中numpy内容。NumPy is the fundamental package for scientific computing with Pytho

资讯

macos安装python(如何在mac上安装python)

阅读(13)

本文主要为您介绍macos安装python,内容包括如何在mac上安装python,macos怎么安装python,如何在MacOSX上安装Python3.3。在mac上搭建python环境: mac系统其实自带了一个python的执行执行环境,用来运行python还行,但是开发可能就不够了,因

资讯

设置python解释器(Python怎样使用解释器)

阅读(12)

本文主要为您介绍设置python解释器,内容包括如何使用pycharm设置python解释器,Python怎样使用解释器,如何调用Python解释器。大学里计算机科学最吸引我的地方就是编译器。最神奇的是,编译器是如何读出我写的那些烂代码,并且还能生成那么复杂

资讯

pythonreadhdf5(好玩的电脑小代码)

阅读(11)

本文主要为您介绍pythonreadhdf5,内容包括好玩的电脑小代码,怎么安装hdf5package在python里,python中输入content=urllib.urlopen(url).read(),按F5运行后没有输。#coding=utf-8#表情识别import cv2from keras.models import load_modelimp

资讯

pythonisselected(python出现这个错误是什么原因)

阅读(12)

本文主要为您介绍pythonisselected,内容包括该怎么办,python/django/html:如何输出selected,python出现这个错误是什么原因。要把代码发现来才知道,以下是常见的错误 下面终于要讲到当你用到更多的Python的功能(数据类型,函数,模块,类等等)时可能

资讯

python编译成dll(python有没有办法能够编译成DLL文件呢?)

阅读(13)

本文主要为您介绍python编译成dll,内容包括python程序怎么编译成dll,python程序怎么编译成dll,python有没有办法能够编译成DLL文件。我在工作中就是用python些程序,再用c\c++封装掉 给同事调用的具体的做法是1. python 程序用 py2exe 打包(

资讯

pythondecode参数(python的instr.decode在哪个库)

阅读(11)

本文主要为您介绍pythondecode参数,内容包括python怎么使用decode,python怎么使用decode,pythondecode中文编码。问题: Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP"

资讯

pythonopencvcrop(如何在Python中使用OpenCV的)

阅读(11)

本文主要为您介绍pythonopencvcrop,内容包括如何在Python中使用OpenCV的,如何安装pythonopencv,opencvpython可以做什么。0.下载安装Opencv,当前版本为249.1.下载Python,当前OPencv版本为249,不过其支持的最新版本的Python为2.

资讯

pythonopencv文字(Python和opencv怎么用,求用图解释)

阅读(10)

本文主要为您介绍pythonopencv文字,内容包括如何在Python中使用OpenCV的,Python和opencv怎么用,求用图解释,opencvpython怎么用。opencv显示图像要把图像放在工程文件的debug 目录里; OpenCV的全称是:Open Source Computer Visi

资讯

pythonopencvcopy(OpenCV中操作Mat的copy和clone的区别)

阅读(13)

本文主要为您介绍pythonopencvcopy,内容包括使用OpenCV复制图像上的某一块区域???,OpenCV中操作Mat的copy和clone的区别,OpenCV中操作Mat的copy和clone的区别。OpenCV中使用Mat,经常会碰到这样一种场景,会想拷贝一份Mat,并对新的Mat进行操作。

资讯

pythonudpipv6(如何用python方法检测UDP端口)

阅读(15)

本文主要为您介绍pythonudpipv6,内容包括UDPv6是什么,如何用python方法检测UDP端口,如何用python方法检测UDP端口。本文实例讲述了python检测远程udp端口是否打开的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下:import so

资讯

python文件编码检测(python文件编码问题)

阅读(24)

本文主要为您介绍python文件编码检测,内容包括怎么判断python代码文件自身的编码类型,Python中检测字符编码的好方法,怎么判断python代码文件自身的编码类型。还真有些弄不明白。不过我就明白的给你说。 不要用记事本,另存改变编码,除非你目

资讯

pythonopencv跟踪(如何用opencv实现人脸检测与跟踪)

阅读(18)

本文主要为您介绍pythonopencv跟踪,内容包括pythonopencv怎样找到要跟踪对象的HSV,opencv怎么实现目标标记并跟踪,python怎么实现文件跟踪。很早以前在processing官网中找到了Face Detect(这个链接需要代理才能打开)这个为processing提供人脸

资讯

pythonhoughcircles(用opencv函数HoughCircles为什么检测不到圆)

阅读(33)

本文主要为您介绍pythonhoughcircles,内容包括在python下利用opencv如何找出最大的圆,请教下OPENCV中houghcircles的实现原理就是那个累积图的谢谢,用opencv函数HoughCircles为什么检测不到圆。//圆形检测代码demo//载入数张包含各种形状的

资讯

pythonopencv识别圆(用Python已知圆心判断一个点是否在圆内)

阅读(26)

本文主要为您介绍pythonopencv识别圆,内容包括在python下利用opencv如何找出最大的圆,python使用opencv进行圆检测的时候出现"Nonetype"objecthasno,用opencv的外圆和内圆怎么找图像的圆。在matplotlib中,每一个对象(图标,轴等)都提供了各种zd方