Python2.7 & OpenCV3.0实现人脸检测的简单实例
来源:互联网 发布:淘宝男模特收入 编辑:程序博客网 时间:2024/06/10 22:18
本文使用的是Anaconda(是一个开源的Python发行版本,包括IPython、Spyder等多种组件,集成了numpy、matplotlib等多种科学包)和OpenCV3.0。 使用Anaconda自带的IDE(Spyder)开发,先定义一个函数,是为检测到人脸并返回相应的坐标。需要注意的是cv2.CascadeClassifier()里面放你自己的xml文件地址。代码如下:
def detectFaces(imagePath): img = cv2.imread(imagePath) #加载openCV自带的人脸检测级联分类器配置文件haarcascade_frontalface_default.xml faceCascade = cv2.CascadeClassifier(r"D:\Software\OpenCV3.0\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml") #此处报错Nonetype object has no attribute ndim表示imread()没有读到图片 #if语句:如果img维度为3,说明不是灰度图,先转化为灰度图gray,如果不为3,也就是2,原图就是灰度图 if img.ndim == 3: gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) else: gray = img faces = faceCascade.detectMultiScale(gray, 1.2, 6)#1.2和6是特征的最小、最大检测窗口,它改变检测结果也会改变 result = [] for (x,y,width,height) in faces: result.append((x,y,x+width,y+height)) return result
拿到人脸坐标后,可以将识别出的人脸生成图片保存到定义的文件夹中。附上代码:
def savePictures(imagePath): faces = detectFaces(imagePath) if faces: #将人脸保存在save_dir目录下。 #Image模块:Image.open获取图像句柄,crop剪切图像(剪切的区域就是detectFaces返回的坐标),save保存。 saveFolder = imagePath.split('.')[0]+"_faces" os.mkdir(saveFolder) count = 0 for (x1,y1,x2,y2) in faces: fileName = os.path.join(saveFolder,str(count)+".jpg") Image.open(imagePath).crop((x1,y1,x2,y2)).save(fileName) count+=1
此外,也还可以在原图对每张人脸用矩形框标记出来,代码如下:
"""在原图像上画矩形,标记出所有人脸。调用Image模块的draw方法,Image.open获取图像句柄,ImageDraw.Draw获取该图像的draw实例,然后调用该draw实例的rectangle方法画矩形(矩形的坐标即detectFaces返回的坐标),outline是矩形线条颜色(B,G,R)。注:原始图像如果是灰度图,则去掉outline,因为灰度图没有RGB可言。"""def drawPictures(imagePath): faces = detectFaces(imagePath) if faces: img = Image.open(imagePath) drawInstance = ImageDraw.Draw(img) for (x1,y1,x2,y2) in faces: drawInstance.rectangle((x1,y1,x2,y2), outline=(255, 0,0)) img.save(imagePath.split('.')[0]+"_faces"+".jpg")
阅读全文
1 0
- Python2.7 & OpenCV3.0实现人脸检测的简单实例
- 图像凸性检测函数convexityDefects在Python2.7下使用opencv3.0的问题
- python2.7+opencv3.1人脸识别
- 基于opencv3的人脸检测
- Opencv3.1+python2.7的CentOS7安装
- Opencv3.1+python2.7的CentOS7安装
- vs13 opencv3.0 人脸检测
- opencv+人脸检测(OpenCv3.0+VS2013)
- windowsXP+python2.7+openCV3.0环境搭建
- Python2.7安装Opencv3
- windows10 python2.7 opencv3
- Python2.7+Opencv 人脸检测
- opencv3.0+VS2013平台人脸检测MFC
- Ubuntu14.04 安装配置Opencv3.0和Python2.7
- 【LinCV】Ubuntu 15.04下安装python2.7+openCV3.0
- Ubuntu14.04 安装配置Opencv3.0和Python2.7
- ubuntu14.04+java7+eclipse3.8+python2.7(+opencv3.0)配置
- opencv3的边缘检测
- 【Java】ArrayList源码剖析
- 材质库总结
- 用JS实现系统常见日周月时间按钮切换效果
- CCA典型关联分析
- PHP中static的用法
- Python2.7 & OpenCV3.0实现人脸检测的简单实例
- Android Activity生命周期
- HDU 4489 The King’s Ups and Downs(组合DP)
- pat 乙级 1027. 打印沙漏(20)
- vue.js的computed,filter,get,set的用法及区别
- 快速幂算法
- hdu 6180 Schedule(贪心)
- 持续集成利器-PIPELINE(二)-Multibranch Pipeline 实现feature branch的持续集成
- 无线传感器网络(WSN)在各个领域的应用分析