opencv进行人脸识别

一、对照片进行人脸识别

1.代码

import cv2

img = cv2.imread('image',1)

face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')

faces = face_engine.detectMultiScale(img,scaleFactor=1.3,minNeighbors=5)

for (x,y,w,h) in faces:

    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

cv2.imshow('img',img)

cv2.waitKey(0)

cv2.destroyAllWindows()

cv2.imwrite('new.jpg',img)


2.效果图



二、利用摄像头进行实时人脸识别

1.代码

import cv2

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')

eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +'haarcascade_eye.xml')

cap = cv2.VideoCapture(0)

while (True):

# 获取摄像头拍摄到的画面

    ret, frame = cap.read()

faces = face_cascade.detectMultiScale(frame, 1.3, 5)

img = frame

for (x, y, w, h)in faces:

# 画出人脸框,蓝色,画笔宽度微

        img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

# 框选出人脸区域,在人脸区域而不是全图中进行人眼检测,节省计算资源

        face_area = img[y:y + h, x:x + w]

eyes = eye_cascade.detectMultiScale(face_area)

# 用人眼级联分类器引擎在人脸区域进行人眼识别,返回的eyes为眼睛坐标列表

        for (ex, ey, ew, eh)in eyes:

# 画出人眼框,绿色,画笔宽度为1

            cv2.rectangle(face_area, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 1)

# 实时展示效果画面

    cv2.imshow('frame2', img)

# 每5毫秒监听一次键盘动作

    if cv2.waitKey(5) &0xFF ==ord('q'):

break

# 最后,关闭所有窗口

cap.release()

cv2.destroyAllWindows()

2.效果图


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 脸部识别实现(vs2013+opencv3.0) 第一种实现 这种是通过研究源码 更改而来,第二种是第一种的...
    lemonCode阅读 1,576评论 0 0
  • 首先要做的就是获取我们的硬件的摄像头获取到的每一帧图片。我们肉眼看到的其实是每一帧图片的连续播放。 通过这个代理方...
    阿汤8阿义阅读 1,290评论 0 1
  • #白止视角 “什么!折颜那家伙要娶我家真真?” 一盏清茶被打翻,水花四溅,瓷杯四分五裂,一把站起身来,双目圆睁地注...
    瓛戣阅读 492评论 0 3
  • 1、getWritableDatabase()和getReadableDatabase()区别 两个方法都会返...
    凌峦阅读 342评论 1 1
  • 有一双翅膀 梦想并不是要多伟大,只要你心中坚持为之奋斗,并坚持不懈的,就叫做梦想。 之前的之前,我想当一位...
    山东水利职业学院专题阅读 187评论 0 0