zoukankan      html  css  js  c++  java
  • OpenCV-Python 人脸眼睛嘴识别

     1 # 识别眼睛、嘴巴、人脸
     2 image = cv2.imread('./yong.jpg')
     3 
     4 gray = cv2.cvtColor(image,code=cv2.COLOR_BGR2BGRA)
     5 # 加载算法
     6 face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
     7 eye_detector = cv2.CascadeClassifier('./haarcascade_eye.xml')
     8 mouth_detector = cv2.CascadeClassifier('./haarcascade_mcs_mouth.xml')
     9 
    10 face_zone = face_detector.detectMultiScale(gray,1.3,3,minSize=(80,80))
    11 print(face_zone)
    12 for x,y,w,h in face_zone:
    13     cv2.rectangle(image, pt1=(x,y),pt2=(x+w,y+h), color=[0,0,255],thickness=2)
    14 
    15 #  人脸切分
    16 h_up = int(face_zone[0,-1]*0.6)
    17 x,y,w,h = face_zone.reshape(-1)
    18 # 头部
    19 head = gray[y:y+h,x:x+w]
    20 head_up = head[0:h_up]
    21 head_down = head[h_up:]
    22 # 检测眼睛
    23 eye_zone = eye_detector.detectMultiScale(head_up,1.3,3,minSize=(10,10))
    24 for ex,ey,ew,eh in eye_zone:
    25     cv2.rectangle(image, pt1=(ex + x,ey+y), pt2=(ex+ew+x,ey+eh+y),color=[0,255,0],thickness=1)
    26 
    27 # 检查嘴
    28 mouth_zone = mouth_detector.detectMultiScale(head_down,1.3,3,minSize=(10,10))
    29 for mx,my,mw,mh in mouth_zone:
    30     cv2.rectangle(image, pt1=(mx + x,my+y+h_up), pt2=(mx+mw+x,my+mh+y+h_up),color=[255,0,0],thickness=1)
    31 
    32 
    33 cv2.imshow('liyong', image)
    34 cv2.waitKey(0)
    35 cv2.destroyAllWindows()    

      代码第一行:    导入图片

      第二行:      灰度化处理

      第六--九行:    读取特征数据,并使用分类器对特征数据进行处理

      第十--十三行:   进行人脸识别

      第十五--二十一行: 进行人脸切分,在上部分识别眼睛;人脸下部分识别嘴的预处理

      第二十三--二十五行:  识别眼睛

      第二十八--三十行:  识别嘴 

      将人脸眼睛替换成自定义眼睛:

      只需要将上面的第24到25行修改成

    eye = cv2.imread('./eye.jpg')
    for ex,ey,ew,eh in eye_zone:
    #     cv2.rectangle(image, pt1=(ex + x,ey+y), pt2=(ex+ew+x,ey+eh+y),color=[0,255,0],thickness=1)
        # 眼睛缩放
        eye2 = cv2.resize(eye,dsize=(ew,eh))
        # 替换
        image[y+ey: y+ey+eh,ex+x:ex+x+ew] = eye2

      eye2 = cv2.resize(eye,dsize=(ew,eh))    将读取的图片换成识别出的眼睛大小

      

  • 相关阅读:
    SVN简介
    TFS简介
    UML简介
    C#++c1FlexGrid+帮助文档09
    vmware虚拟机 C硬盘空间 无损扩容 新测
    批处理命令中set定义的两种变量介绍 计算机基础知识
    ASP.NET获取网站根目录(路径)
    VMware(bridge、NAT、host-only、custom)含义
    spring3.0+Atomikos 构建jta的分布式事务
    在做了 BasePage 时: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 / / 节中包括
  • 原文地址:https://www.cnblogs.com/MoonlightMaleGod/p/9955067.html
Copyright © 2011-2022 走看看