- UID
- 205569
- 在线时间
- 0 小时
- 最后登录
- 2015-6-3
- 注册时间
- 2012-8-25
- 宅魂
- 2820 点
- 贡献
- 299 点
- 宅币
- 17268 枚
- 宅の石(入宅度)
- 0 块
- 元气(技能点)
- 34 点
- 活跃
- 0 ℃
- 听众
- 9
- 收听
- 1
该用户从未签到
技术宅认证程序员
重度中二患者
- 积分
- 28325
|
又到了骗钱时间!!
人脸检测也算是一个老话题了。。。但是opencv提供了很好的目标检测的API,我们只需要提供harr分类器便可以轻松搞定。。
直接上代码
[mw_shl_code=python,true]#!/usr/bin/env python
# -*- coding:utf-8 -*-
import cv
HAAR_CASCADE_PATH = "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml"
CAMERA_INDEX = 0
def detect_faces(image, cascade, storage):
faces = []
detected = cv.HaarDetectObjects(image, cascade, storage, 1.2, 2, cv.CV_HAAR_DO_CANNY_PRUNING, (50, 50))
if detected:
for (x, y, w, h), n in detected:
faces.append((x, y, w, h))
return faces
if __name__ == "__main__":
cv.NamedWindow("Video", cv.CV_WINDOW_AUTOSIZE)
capture = cv.CaptureFromCAM(CAMERA_INDEX)
storage = cv.CreateMemStorage()
cascade = cv.Load(HAAR_CASCADE_PATH)
faces = []
i = 0
while True:
image = cv.QueryFrame(capture)
if i % 5 == 0:
faces = detect_faces(image, cascade, storage)
for (x, y, w, h) in faces:
cv.Rectangle(image, (x, y), (x + w, y + h), 255, -1)
cv.ShowImage("Video", image)
i += 1
c = cv.WaitKey(10)
[/mw_shl_code]
其中分类器我是直接用了opencv库自带的一个人脸识别的分类器
效果如图
个人原因挡住脸了。。如果不想挡住脸。。将cv.Rectange中最后一个参数-1改为1或者直接删掉就好了。
这个东西当然也有很大缺陷,比如有时候识别错误啊,而且不支持旋转什么的。。。歪个脖子就认不出来了。。。所以还是有很大的改进空间的。
|
评分
-
查看全部评分
|