zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然python学习笔记:python 用 Open CV 进行人脸识别

    要对特定图像进行识别,最关键的是要有识别对象的特征文件, OpenCV 己内置
    了人脸识别特征文件,我们只需使用 OpenCV 的 CascadeClassifier 类即可进行识别 。
    创建 Cas cadeClas s ifier 对象的语法为 :

     

    import cv2
    
    faceCascade = cv2.CascadeClassifier("E:\haarcascade_frontalface_default.xml")
    接着通过识别对象 detectMultiScale 方法即可对面部进行识别,语法为:

     

     

    例如,设置识别最小区域为( 10 , 10 ),误检率为 5 , 模式为正常识别,要识别的
    图像为 image , 并将识别结果存到 faces 变量中 :

     

    标识面部位置
    找出图片中的面部位置,并在左下角显示识别出的面部数量。

    import cv2 
    
    casc_path = "E:\haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(casc_path)
    imagename = cv2.imread("F:\pythonBase\pythonex\ch10\media\person1.jpg")
    faces = faceCascade.detectMultiScale(imagename, scaleFactor=1.1, minNeighbors=5, minSize=(30,30), flags = cv2.CASCADE_SCALE_IMAGE)
    #imagename.shape[0]:图片高度,imagename.shape[1]:图片宽度
    cv2.rectangle(imagename, (10,imagename.shape[0]-20), (110,imagename.shape[0]), (0,0,0), -1)
    cv2.putText(imagename,"Find " + str(len(faces)) + " face!", (10,imagename.shape[0]-5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 2)
    for (x,y,w,h) in faces:
        cv2.rectangle(imagename,(x,y),(x+w, y+h),(128,255,0),2)
    cv2.namedWindow("facedetect")
    cv2.imshow("facedetect", imagename)
    cv2.waitKey(0)  
    cv2.destroyWindow("facedetect")

    detectMultiScale 方法可识别图片中的多个人脸,把图
    片文件更改为 person3.jpg 或 person8.jpg 进行多个人脸的识别 。
    import cv2 
    
    casc_path = "E:\haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(casc_path)
    imagename = cv2.imread("F:\pythonBase\pythonex\ch10\media\person3.jpg")
    faces = faceCascade.detectMultiScale(imagename, scaleFactor=1.1, minNeighbors=5, minSize=(30,30), flags = cv2.CASCADE_SCALE_IMAGE)
    #imagename.shape[0]:图片高度,imagename.shape[1]:图片宽度
    cv2.rectangle(imagename, (10,imagename.shape[0]-20), (110,imagename.shape[0]), (0,0,0), -1)
    cv2.putText(imagename,"Find " + str(len(faces)) + " face!", (10,imagename.shape[0]-5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 2)
    for (x,y,w,h) in faces:
        cv2.rectangle(imagename,(x,y),(x+w, y+h),(128,255,0),2)
    cv2.namedWindow("facedetect")
    cv2.imshow("facedetect", imagename)
    cv2.waitKey(0)  
    cv2.destroyWindow("facedetect")

    import cv2 
    
    casc_path = "E:\haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(casc_path)
    imagename = cv2.imread("F:\pythonBase\pythonex\ch10\media\person8.jpg")
    faces = faceCascade.detectMultiScale(imagename, scaleFactor=1.1, minNeighbors=5, minSize=(30,30), flags = cv2.CASCADE_SCALE_IMAGE)
    #imagename.shape[0]:图片高度,imagename.shape[1]:图片宽度
    cv2.rectangle(imagename, (10,imagename.shape[0]-20), (110,imagename.shape[0]), (0,0,0), -1)
    cv2.putText(imagename,"Find " + str(len(faces)) + " face!", (10,imagename.shape[0]-5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 2)
    for (x,y,w,h) in faces:
        cv2.rectangle(imagename,(x,y),(x+w, y+h),(128,255,0),2)
    cv2.namedWindow("facedetect")
    cv2.imshow("facedetect", imagename)
    cv2.waitKey(0)  
    cv2.destroyWindow("facedetect")

     

  • 相关阅读:
    排序算法总结
    NAT协议 私有和公有ip如何相互转换。
    Redis的两种持久化方式
    分布式系统CAP理论
    常见容错机制:failover、failfast、failback、failsafe
    Redis分布式锁的正确实现方式
    Ticket机制
    微信小程序网络请求封装
    js+ajax 上传多图片,并删除
    js+ajax 上传单图片
  • 原文地址:https://www.cnblogs.com/tszr/p/12032890.html
Copyright © 2011-2022 走看看