图像识别 python+opencv的简单人脸识别
来源:互联网 发布:笨方法学python pdf 编辑:程序博客网 时间:2024/06/10 01:06
#
源码如下:
#!/usr/bin/env python#coding=utf-8import osfrom PIL import Image, ImageDrawimport cvdef detect_object(image): '''检测图片,获取人脸在图片中的坐标''' grayscale = cv.CreateImage((image.width, image.height), 8, 1) cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY) cascade = cv.Load("/opt/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt_tree.xml") rect = cv.HaarDetectObjects(grayscale, cascade, cv.CreateMemStorage(), 1.1, 2, cv.CV_HAAR_DO_CANNY_PRUNING, (20,20)) result = [] for r in rect: result.append((r[0][0], r[0][1], r[0][0]+r[0][2], r[0][1]+r[0][3])) return resultdef process(infile): '''在原图上框出头像并且截取每个头像到单独文件夹''' image = cv.LoadImage(infile); if image: faces = detect_object(image) im = Image.open(infile) path = os.path.abspath(infile) save_path = os.path.splitext(path)[0]+"_face" try: os.mkdir(save_path) except: pass if faces: draw = ImageDraw.Draw(im) count = 0 for f in faces: count += 1 draw.rectangle(f, outline=(255, 0, 0)) drow_save_path = os.path.join(save_path,"out.jpg") im.save(drow_save_path, "JPEG", quality=80) else: print "Error: cannot detect faces on %s" % infileif __name__ == "__main__": process("/Users/zhangdebin/Documents/checkFace2.jpg")
示例图片1:
可以看出,对于比较干净的人脸头像,使用opencv库haarcascade_frontalface_alt_tree.xml的识别精度很高(这张达到了100%),同时,对于表情变化的人脸也有很强的鲁棒性。
示例图片2:
但是,对于上传的比较随意的头像照片,比如示例图片2这些有帽子、眼镜遮挡的人脸图片,识别效果就会很差,本组只有唯一一个没有帽子遮挡的人脸被识别成功
本次只是简单的测试了下,python使用opencv库的人脸特征进行人脸识别的效果,仅供初学参考。
0 0
- 图像识别 python+opencv的简单人脸识别
- 图像识别 python+opencv的简单人脸识别
- Python + OpenCV 实现简单的人脸识别
- android opencv 简单的人脸识别
- 人脸识别(OpenCV+Python)
- 人脸识别(OpenCV+Python)
- Python+opencv人脸识别
- OpenCV+python 人脸识别
- Python +OpenCV 人脸识别
- 【图像识别】 Python+Opencv调用摄像头实现人脸识别并保存视频
- 基于PCA简单的人脸识别opencv实现-图像处理学习笔记
- OpenCV的行人识别&人脸识别
- OpenCV的行人识别&人脸识别
- [转]基于OpenCV的PHP图像人脸识别技术
- 基于OpenCV的PHP图像人脸识别技术
- [转]基于OpenCV的PHP图像人脸识别技术
- 基于OpenCV的PHP图像人脸识别技术
- 基于OpenCV的PHP图像人脸识别技术
- MyEclipse启动openfire
- rhel7中postfix虚拟别名域实现邮件跨域群发
- novaclient代码解析之---通过nova show <server-id>命令解析Nova client与Nova API之间的调用关系
- JAVA + SELENIUM--环境搭建
- ride中使用 python的math库 进行数学计算
- 图像识别 python+opencv的简单人脸识别
- List对象去重操作
- RenderTargetBitmap + usercontrol VisualBrush
- Myeclipse 9.0 M1 激活全纪录
- Myeclipse 8.5 配置SVN
- opencms学习笔记
- java的api必须掌握的(重要)
- Vijava 学习笔记之(Datacenter 关联集群、资源池和ESXI)
- 五子棋的核心算法