python人脸识别代码(如何线上部署用python基于dlib写的人脸识别算法)

1.如何线上部署用python基于dlib写的人脸识别算法

python使用dlib进行人脸检测与人脸关键点标记Dlib简介:首先给大家介绍一下DlibDlib是一个跨平台的C++公共库,除了线程支持,网络支持,提供测试以及大量工具等等优点,Dlib还是一个强大的机器学习的C++库,包含了许多机器学习常用的算法。

同时支持大量的数值算法如矩阵、大整数、随机数运算等等。Dlib同时还包含了大量的图形模型算法。

最重要的是Dlib的文档和例子都非常详细。Dlib主页:这篇博客所述的人脸标记的算法也是来自Dlib库,Dlib实现了One Millisecond Face Alignment with an Ensemble of Regression Trees中的算法这篇论文非常出名,在谷歌上打上One Millisecond就会自动补全,是CVPR 2014(国际计算机视觉与模式识别会议)上的一篇国际顶级水平的论文。

毫秒级别就可以实现相当准确的人脸标记,包括一些半侧脸,脸很不清楚的情况,论文本身的算法十分复杂,感兴趣的同学可以下载看看。Dlib实现了这篇最新论文的算法,所以Dlib的人脸标记算法是十分先进的,而且Dlib自带的人脸检测库也很准确,我们项目受到硬件所限,摄像头拍摄到的画面比较模糊,而在这种情况下之前尝试了几个人脸库,识别率都非常的低,而Dlib的效果简直出乎意料。

相对于C++我还是比较喜欢使用python,同时Dlib也是支持python的,只是在配置的时候碰了不少钉子,网上大部分的Dlib资料都是针对于C++的,我好不容易才配置好了python的dlib,这里分享给大家:Dlib for python 配置:因为是用python去开发计算机视觉方面的东西,python的这些科学计算库是必不可少的,这里我把常用的科学计算库的安装也涵盖在内了,已经安装过这些库的同学就可以忽略了。我的环境是Ubuntu14.04:大家都知道Ubuntu是自带python2.7的,而且很多Ubuntu系统软件都是基于python2.7的,有一次我系统的python版本乱了,我脑残的想把python2.7卸载了重装,然后……好像是提醒我要卸载几千个软件来着,没看好直接回车了,等我反应过来Ctrl + C 的时候系统已经没了一半了…所以我发现想要搞崩系统,这句话比rm -rf 还给力…sudo apt-get remove python2.71首先安装两个python第三方库的下载安装工具,ubuntu14.04好像是预装了easy_install以下过程都是在终端中进行:1.安装pipsudo apt-get install python-pip12.安装easy-installsudo apt-get install python-setuptools13.测试一下easy_install有时候系统环境复杂了,安装的时候会安装到别的python版本上,这就麻烦了,所以还是谨慎一点测试一下,这里安装一个我之前在博客中提到的可以模拟浏览器的第三方python库测试一下。

sudo easy_install Mechanize14.测试安装是否成功在终端输入python进入python shellpython1进入python shell后import一下刚安装的mechanize>>>import mechanize1没有报错,就是安装成功了,如果说没有找到,那可能就是安装到别的python版本的路径了。同时也测试一下PIL这个基础库>>>import PIL1没有报错的话,说明PIL已经被预装过了5.安装numpy接下来安装numpy首先需要安装python-dev才可以编译之后的扩展库sudo apt-get install python-dev1之后就可以用easy-install 安装numpy了sudo easy_install numpy1这里有时候用easy-install 安装numpy下载的时候会卡住,那就只能用 apt-get 来安装了:sudo apt-get install numpy1不推荐这样安装的原因就是系统环境或者说python版本多了之后,直接apt-get安装numpy很有可能不知道装到哪个版本去了,然后就很麻烦了,我有好几次遇到这个问题,不知道是运气问题还是什么,所以风险还是很大的,所以还是尽量用easy-install来安装。

同样import numpy 进行测试python>>>import numpy1234没有报错的话就是成功了下面的安装过程同理,我就从简写了,大家自己每步别忘了测试一下6.安装scipysudo apt-get install python-scipy17.安装matplotlibsudo apt-get install python-matplotlib18.安装dlib我当时安装dlib的过程简直太艰辛,网上各种说不知道怎么配,配不好,我基本把stackoverflow上的方法试了个遍,才最终成功编译出来并且导入,不过听说18.18更新之后有了setup.py,那真是极好的,18.18我没有亲自配过也不能乱说,这里给大家分享我配置18.17的过程吧:1.首先必须安装libboost,不然是不能使用.so库的sudo apt-get install libboost-python-dev cmake12.到Dlib的官网上下载dlib,会下载下来一个压缩包,里面有C++版的dlib库以及例子文档,Python dlib库的代码例子等等我使用的版本是dlib-18.17,大家也可以在我这里下载:之后进入python_examples下使用bat文件进行编译,编译需要先安装libboost-python-dev和cmakecd to dlib-18.17/python_examples./compile_dlib_python_module.bat 123之后会得到一个dlib.so,复制到dist-packages目录下即可使用这里大家也可以直接用我编译好的.so库,但是也必须安装libboost才可以,不然python是不能调用so库的,下载地址:将.so复制到dist-packages目录下sudo cp dlib.so /usr/local/lib/python2.7/dist-packages/1最新的dlib18.18好像就没有这个bat文件了,取而代之的是一个setup文件,那么安装起来应该就没有这么麻烦了。

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

近几天微软的发布会上讲到了不少认脸解锁的内容,经过探索,其实利用手头的资源我们完全自己也可以完成这样一个过程。

本文讲解了如何使用Python,基于OpenCV与Face++实现人脸解锁的功能。本文基于Python 2.7.11,Windows 8.1 系统。

主要内容Windows 8.1上配置OpenCVOpenCV的人脸检测应用使用Face++完成人脸辨识(如果你想自己实现这部分的功能,可以借鉴例如这个项目)Windows 8.1上配置OpenCV入门的时候配置环境总是一个非常麻烦的事情,在Windows上配置OpenCV更是如此。既然写了这个推广的科普教程,总不能让读者卡在环境配置上吧。

下面用到的文件都可以在这里(提取码:b6ec)下载,但是注意,目前OpenCV仅支持Python2.7。将cv2加入site-packages将下载下来的cv2.pyd文件放入Python安装的文件夹下的Libsite-packages目录。

就我的电脑而言,这个目录就是C:/Python27/Lib/site-packages/。记得不要直接使用pip安装,将文件拖过去即可。

安装numpy组件在命令行下进入到下载下来的文件所在的目录(按住Shift右键有在该目录打开命令行的选项)键入命令:1 pip install numpy-1.11.0rc2-cp27-cp27m-win32.whl如果你的系统或者Python不适配,可以在这里下载别的轮子。测试OpenCV安装在命令行键入命令:1 python -c "import cv2"如果没有出现错误提示,那么cv2就已经安装好了。

OpenCV的人脸检测应用人脸检测应用,简而言之就是一个在照片里找到人脸,然后用方框框起来的过程(我们的相机经常做这件事情)那么具体而言就是这样一个过程:获取摄像头的图片在图片中检测到人脸的区域在人脸的区域周围绘制方框获取摄像头的图片这里简单的讲解一下OpenCV的基本操作。以下操作是打开摄像头的基本操作:1234567 #coding=utf8import cv2# 一般笔记本的默认摄像头都是0capInput = cv2.VideoCapture(0)# 我们可以用这条命令检测摄像头是否可以读取数据if not capInput.isOpened(): print('Capture failed because of camera')那么怎么从摄像头读取数据呢?12345678 # 接上段程序# 现在摄像头已经打开了,我们可以使用这条命令读取图像# 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也提供了显示图片的方法:123456 # 接上段程序# 定义一个窗口,当然也可以不定义imgWindowName = 'ImageCaptured'imgWindow = cv2.namedWindow(imgWindowName, cv2.WINDOW_NORMAL)# 在窗口中显示图片cv2.imshow(imgWindowName, img)当然在完成所有操作以后需要把摄像头和窗口都做一个释放:12345 # 接上段程序# 释放摄像头capInput.release()# 释放所有窗口cv2.destroyAllWindows()在图片中检测到人脸的区域OpenCV给我们提供了已经训练好的人脸的xml模板,我们只需要载入然后比对即可。

12345678 # 接上段程序# 载入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中的四个量分别为左上角的横坐标、纵坐标、宽度、长度。所以我们根据这四个量很容易的就可以绘制出方框。

123 # 接上段程序# 函数的参数分别为:图像,左上角坐标,右下角坐标,颜色,宽度img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)成果根据上面讲述的内容,我们现在已经可以完成一个简单的人脸辨认了: #coding=utf8import cv2print('Press Esc to exit')faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')imgWindow = cv2.namedWindow('FaceDetect', cv2.WINDOW_NORMAL)def detect_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 < time.time():nextCaptureTime = time.time() + 0.1faces = faceCascade.detectMultiScale(gray, 1.3, 5)if faces:for x, y, w, h in faces:img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)cv2.imshow('FaceDetect', img)# 这是简单的读取键盘输入,27即Esc的acsii码if cv2.waitKey(1) & 0xFF == 27: breakcapInput.release()cv2.destroyAllWindows()if __name__ == '__main__':detect_face()使用Face++完成人脸辨识第一次认识Face++还是因为支付宝的人脸支。

3.人脸识别为什么用python开发

可以使用OpenCV,OpenCV的人脸检测功能在一般场合还是不错的。

而ubuntu正好提供了python-opencv这个包,用它可以方便地实现人脸检测的代码。 写代码之前应该先安装python-opencv: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 #!/usr/bin/python # -*- coding: UTF-8 -*- # face_detect.py # Face Detection using OpenCV. Based on sample code from: # /m76db1d6b # Usage: python face_detect.py import sys, os from opencv.cv import * from opencv.highgui import * from PIL import Image, ImageDraw from math import sqrt def detectObjects(image): """Converts an image to grayscale and prints the locations of any faces found""" grayscale = cvCreateImage(cvSize(image.width, image.height), 8, 1) cvCvtColor(image, grayscale, CV_BGR2GRAY) storage = cvCreateMemStorage(0) cvClearMemStorage(storage) cvEqualizeHist(grayscale, grayscale) cascade = ( '/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml', cvSize(1,1)) faces = cvHaarDetectObjects(grayscale, cascade, storage, 1.1, 2, CV_HAAR_DO_CANNY_PRUNING, cvSize(20,20)) result = [] for f in faces: result.append((f.x, f.y, f.x+f.width, f.y+f.height)) return result def grayscale(r, g, b): return int(r * .3 + g * .59 + b * .11) def process(infile, outfile): image = cvLoadImage(infile); if image: faces = detectObjects(image) im = Image.open(infile) if faces: draw = ImageDraw.Draw(im) for f in faces: draw.rectangle(f, outline=(255, 0, 255)) im.save(outfile, "JPEG", quality=100) else: print "Error: cannot detect faces on %s" % infile if __name__ == "__main__": process('input.jpg', 'output.jpg')。

4.人脸识别为什么用python开发

可以使用OpenCV,OpenCV的人脸检测功能在一般场合还是不错的。而ubuntu正好提供了python-opencv这个包,用它可以方便地实现人脸检测的代码。

写代码之前应该先安装python-opencv:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

# face_detect.py

# Face Detection using OpenCV. Based on sample code from:

# /m76db1d6b

# Usage: python face_detect.py

import sys, os

from opencv.cv import *

from opencv.highgui import *

from PIL import Image, ImageDraw

from math import sqrt

def detectObjects(image):

"""Converts an image to grayscale and prints the locations of any faces found"""

grayscale = cvCreateImage(cvSize(image.width, image.height), 8, 1)

cvCvtColor(image, grayscale, CV_BGR2GRAY)

storage = cvCreateMemStorage(0)

cvClearMemStorage(storage)

cvEqualizeHist(grayscale, grayscale)

cascade = (

'/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml',

cvSize(1,1))

faces = cvHaarDetectObjects(grayscale, cascade, storage, 1.1, 2,

CV_HAAR_DO_CANNY_PRUNING, cvSize(20,20))

result = []

for f in faces:

result.append((f.x, f.y, f.x+f.width, f.y+f.height))

return result

def grayscale(r, g, b):

return int(r * .3 + g * .59 + b * .11)

def process(infile, outfile):

image = cvLoadImage(infile);

if image:

faces = detectObjects(image)

im = Image.open(infile)

if faces:

draw = ImageDraw.Draw(im)

for f in faces:

draw.rectangle(f, outline=(255, 0, 255))

im.save(outfile, "JPEG", quality=100)

else:

print "Error: cannot detect faces on %s" % infile

if __name__ == "__main__":

process('input.jpg', 'output.jpg')

python人脸识别代码

转载请注明出处代码入门网 » python人脸识别代码(如何线上部署用python基于dlib写的人脸识别算法)

资讯

pythoncsv读取路径(python怎么读取csv文件)

阅读(21)

本文主要为您介绍pythoncsv读取路径,内容包括python怎么读取csv文件,请教PYTHON读取CSV文件方法,求问python怎么读取csv文件。这两天刚好看到,Python CookBook上有说到。这里是三种读取csv的方法。文件格式是这样的Region,DATE_,RAW_A

资讯

python中subprocess(如何在python的程序中调用subprocess)

阅读(19)

本文主要为您介绍python中subprocess,内容包括如何在python的程序中调用subprocess,如何在python的程序中调用subprocess,python中subprocess实现一次输入一次输出(输入后处理得到的结果)。C:\DSATools_8_net\Tsat\bin\tsat_batch.exe兄

资讯

脚本模式Python(如何运行python脚本)

阅读(18)

本文主要为您介绍脚本模式Python,内容包括如何运行python脚本,如何运行python脚本,python脚本式编程怎么使用方法。Python安装好以后,在开始菜单会看到一个idle工具(一个增强的交互命令行解释器窗口)以及一个自带的编辑器。在任意目录新建一个

资讯

python中matlab(Python跟Matlab有什么区别和联系呢)

阅读(26)

本文主要为您介绍python中matlab,内容包括Python跟Matlab有什么区别和联系呢,怎么用python调用matlab,怎么用python调用matlab?。联系:可以使用python语言开发Matlab软件使用的程序。区别:指点不同Python:是一种跨平台的计算机程序设计语言。2

资讯

python开发app服务器(如何用python开发移动App后台)

阅读(21)

本文主要为您介绍python开发app服务器,内容包括python可以开发手机app吗,如何用python开发移动App后台,如何搭建app应用服务器python。使用python开发APP后台要用到tornado框架,因为非阻塞io的原因,性能非常高,特别适合写后端API(App的后端应

资讯

pythonbytes拼接(请问python中这字符串转bytes怎么做算的)

阅读(41)

本文主要为您介绍pythonbytes拼接,内容包括pythonbytes怎么分割成若干个bytes,请问python中这字符串转bytes怎么做算的,python3中如何进bytes串转换成str。字符串类(str)有一个方法encode可以将字符串转换为bytes对象。调用encode方法是,可选

资讯

python版本位数(Python的这几个版本区别)

阅读(27)

本文主要为您介绍python版本位数,内容包括Python的这几个版本区别,如何看python是64位还是32位,python怎么取各个数位的数。系统区别:Download Windows X86 可供电脑系统32位使用。2、Download Windows X86-64 可供电脑

资讯

python中json如何存放字节数组(byte数组怎么存放到Json中传递)

阅读(21)

本文主要为您介绍python中json如何存放字节数组,内容包括byte数组怎么存放到Json中传递,byte数组怎么存放到Json中传递,json数据存为数组。json 是一种很简洁的协议,但可惜的是,它只能传递基本的数型(int,long,string等),但不能传递byte类型。如

资讯

python如何调用mysql(如何使用python连接mysql数据库)

阅读(27)

本文主要为您介绍python如何调用mysql,内容包括如何使用python连接mysql数据库,python怎么使用mysql数据库,如何使用python调用mysql存储过程。你可以访问Python数据库接口及API查看详细的支持数据库列表。不同的数据库你需要下载不同的DB

资讯

python表格倾斜矫正(如何在表格里添加倾斜线)

阅读(20)

本文主要为您介绍python表格倾斜矫正,内容包括表格歪了如何摆正,pythonmatplotlib绘曲线图时,把字倾斜,EXCEL中如何实现以下情况,让表格倾斜过来,字也是倾斜的搜狗。不知道你是指Word还是Excel。1.在 Word 中绘制斜线表头表头总是位于所选

资讯

python完全平方数(python判断一个数是不是完全平方数)

阅读(20)

本文主要为您介绍python完全平方数,内容包括python判断一个数是不是完全平方数,python判断一个数是不是完全平方数,python判断输入的数字是完全平方还是三次方。完全平方指用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数能表示成

资讯

pythoncsv读取路径(python怎么读取csv文件)

阅读(21)

本文主要为您介绍pythoncsv读取路径,内容包括python怎么读取csv文件,请教PYTHON读取CSV文件方法,求问python怎么读取csv文件。这两天刚好看到,Python CookBook上有说到。这里是三种读取csv的方法。文件格式是这样的Region,DATE_,RAW_A

资讯

python中subprocess(如何在python的程序中调用subprocess)

阅读(19)

本文主要为您介绍python中subprocess,内容包括如何在python的程序中调用subprocess,如何在python的程序中调用subprocess,python中subprocess实现一次输入一次输出(输入后处理得到的结果)。C:\DSATools_8_net\Tsat\bin\tsat_batch.exe兄

资讯

脚本模式Python(如何运行python脚本)

阅读(18)

本文主要为您介绍脚本模式Python,内容包括如何运行python脚本,如何运行python脚本,python脚本式编程怎么使用方法。Python安装好以后,在开始菜单会看到一个idle工具(一个增强的交互命令行解释器窗口)以及一个自带的编辑器。在任意目录新建一个

资讯

python中matlab(Python跟Matlab有什么区别和联系呢)

阅读(26)

本文主要为您介绍python中matlab,内容包括Python跟Matlab有什么区别和联系呢,怎么用python调用matlab,怎么用python调用matlab?。联系:可以使用python语言开发Matlab软件使用的程序。区别:指点不同Python:是一种跨平台的计算机程序设计语言。2

资讯

python开发app服务器(如何用python开发移动App后台)

阅读(21)

本文主要为您介绍python开发app服务器,内容包括python可以开发手机app吗,如何用python开发移动App后台,如何搭建app应用服务器python。使用python开发APP后台要用到tornado框架,因为非阻塞io的原因,性能非常高,特别适合写后端API(App的后端应

资讯

python语音波形(如何使用python实现wave音频文件回放)

阅读(22)

本文主要为您介绍python语音波形,内容包括python问题对一个波形文件做fft,然后怎么获取那些频率分量,如何使用python实现wave音频文件回放,如何使用python实现wave音频文件回放。修改采样点数和起始位置进行不同位置和长度的音频波形分析N=

资讯

win32processpython(怎样使用python查询系统某一进程是否存在)

阅读(1)

本文主要为您介绍win32processpython,内容包括pythonwin32是什么?pythoncom如何理解,怎样使用python查询系统某一进程是否存在,怎样使用python查询系统某一进程是否存在。只需要一小段python代码,就可以解决用python查询判断系统进程是否存

资讯

python新建对象(python中怎么用类创建对象)

阅读(2)

本文主要为您介绍python新建对象,内容包括python中怎么用类创建对象,python如何定义新对象,python如何定义新对象。class BaseObject(object):def __init__(self, **kwg):self.__dict__ = d

资讯

pythonsslurllib(python报错urllib.error.URLError:)

阅读(1)

本文主要为您介绍pythonsslurllib,内容包括pythonurllib怎么用,pythonurllib,pythonhttplib2urllib区别。jango站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown ur

资讯

python变量替换(python中的变量替换怎么使用)

阅读(1)

本文主要为您介绍python变量替换,内容包括python中的变量替换怎么使用,Python怎样用变量替换字符串?,怎样通过参数替换python脚本里的变量值。1. 使用连接符: +world = "World"print "Hello " + world + " ! "2. 使用占位符来内插w

资讯

pythonraise用法(python中可以使用if作为变量名吗)

阅读(1)

本文主要为您介绍pythonraise用法,内容包括python中可以使用if作为变量名吗,Python新手,Python中except的用法和作用是什么?请指教,python当中的迭代器如何使用?举例说明,谢谢。不可以,if为python保留的字符下面的列表显示了在 Python 中的

资讯

sparkpythonhbase(有没有Python写的spark连接Hbase的例子)

阅读(2)

本文主要为您介绍sparkpythonhbase,内容包括有没有Python写的spark连接Hbase的例子,如何提高python写hbase的性能,spark读hbaseparquet哪个快。博主项目实践中,经常需要用Spark从Hbase中读取数据。其中,spark的版本为1.6,hbase的版本为0.98。

资讯

python文字编码转换(python如何将乱码转成汉字)

阅读(1)

本文主要为您介绍python文字编码转换,内容包括python字符编码转换,python如何将乱码转成汉字,python编码转换。python2与python3稍微有点区别2、python2中默认的字符编码格式都是unicode,在字符串前加u,表示unicode

资讯

python相除取整数(python为什么算除法自动取整了)

阅读(1)

本文主要为您介绍python相除取整数,内容包括python2.7.12中如何引用模块做整数相除,python2.7.12引用模块做整数除法,python除数向上取整怎么写,就是0.3取12.6取3这种,我5/10得到。在2.x版本都是这样,会自动取整。在3.x版本以上改了,结果保留