【Raspberry Pi 3试用体验】+Opencv+python的人脸识别
2016-05-18 22:39
441 查看
//本文内容来自StarSight,欢迎访问。
上次安装了opencv库,这次我们来使用一下。
安装PIL库
sudo pip install pil
import os
from PIL import Image, ImageDraw
import cv
def detect_object(image):
'''检测图片,获取人脸在图片中的坐标'''
grayscale = cv.CreateImage((image.width, image.height), 8, 1)
cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)
cascade = cv.Load("/usr/local/opencv-2.4.9/data/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 result
def 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))
a = im.crop(f)
file_name = os.path.join(save_path,str(count)+".jpg")
# print file_name
a.save(file_name)
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" % infile
if __name__ == "__main__":
process("kobe.jpg")
接下来只要运行python xx.py
过一会,如果图片内有人的话生成一个文件夹,里面有一张人脸的截图和一张人脸的标识图。
以下为示例:
接下来用一下摄像头:
sudo apt-get install fswebcam
sudo fswebcam --device /dev/video0 a.jpg
在 process(“kobe.jpg”) 前面加一句:
os.system("fswebcam --device /dev/video0 /home/pi/Desktop/kobe.jpg")
看一下效果:
光线不好还是能认出来,说明opencv自带的分类器算开源里面不错的了~
参考:
Tigerboard开发板试用体验
python+opencv的人脸识别
NanoPi2试用体验 简单人脸识别-结项
上次安装了opencv库,这次我们来使用一下。
安装PIL库
sudo pip install pil
import os
from PIL import Image, ImageDraw
import cv
def detect_object(image):
'''检测图片,获取人脸在图片中的坐标'''
grayscale = cv.CreateImage((image.width, image.height), 8, 1)
cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)
cascade = cv.Load("/usr/local/opencv-2.4.9/data/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 result
def 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))
a = im.crop(f)
file_name = os.path.join(save_path,str(count)+".jpg")
# print file_name
a.save(file_name)
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" % infile
if __name__ == "__main__":
process("kobe.jpg")
接下来只要运行python xx.py
过一会,如果图片内有人的话生成一个文件夹,里面有一张人脸的截图和一张人脸的标识图。
以下为示例:
接下来用一下摄像头:
sudo apt-get install fswebcam
sudo fswebcam --device /dev/video0 a.jpg
在 process(“kobe.jpg”) 前面加一句:
os.system("fswebcam --device /dev/video0 /home/pi/Desktop/kobe.jpg")
看一下效果:
光线不好还是能认出来,说明opencv自带的分类器算开源里面不错的了~
参考:
Tigerboard开发板试用体验
python+opencv的人脸识别
NanoPi2试用体验 简单人脸识别-结项
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法