zoukankan      html  css  js  c++  java
  • win10+python3.7+dlib+opencv+face_recognition实现人脸识别

    一。环境准备

    首先在anaconda中新建一个环境,在命令行中切换至python3.7环境。 

    1.安装cmake和boost

    pip install cmake -i https://pypi.tuna.tsinghua.edu.cn/simple 
    pip install boost -i https://pypi.tuna.tsinghua.edu.cn/simple 

    2.安装opencv

    pip install opencv-python==3.4.1.15 -i https://pypi.tuna.tsinghua.edu.cn/simple

    pip install opencv-contrib-python==3.4.1.15 -i https://pypi.tuna.tsinghua.edu.cn/simple


    3.安装dlib(容易失败)

    以下方式都可以尝试一下

    1.pip install dlib==19.9.0

    2.pip install dlib==19.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

    3.或者提前去官网下载,切换至目录,然后通过python setup.py install 编译

    4.安装face_recognition

    pip install face_recognition -i https://pypi.tuna.tsinghua.edu.cn/simple

     摄像头实时识别

    import cv2
    import face_recognition
    #1、准备人脸库
    # #读取图片
    me=cv2.imread('test.jpg')
    him=cv2.imread('lena.jpg')
    
    #对图片进行编码
    me_face_encoding=face_recognition.face_encodings(me)[0]
    him_face_encoding=face_recognition.face_encodings(him)[0]
    
    #准备人脸库的人脸编码列表
    known_face_encodings=[me_face_encoding,him_face_encoding]
    #准备人脸库中人脸编码对应姓名
    known_face_names=['me','him']
    
    #2、捕获视频中的图片
    vc=cv2.VideoCapture(0)
    while True:
        ret,img=vc.read()
        if not ret:
            print('没有捕获到视频')
            break
        #3、发现图片中的人脸位置
        locations=face_recognition.face_locations(img)
        #图片中人脸进行编码
        face_encodings=face_recognition.face_encodings(img,locations)
        #遍历locations,face_encodings,识别图片中的人脸
        for (top,right,bottom,left), face_encoding in zip(locations,face_encodings):
            #4、识别视频中图片中人脸的姓名
            matchs=face_recognition.compare_faces(known_face_encodings,face_encoding)
            name='unknown'
            for match,known_name in zip(matchs,known_face_names):
                if match:
                    name=known_name
                    break
            #标记人脸位置
            cv2.rectangle(img,(left,top),(right,bottom),(0,0,255),2)
            #标记人脸姓名
            cv2.putText(img,name,(left,top-20),cv2.FONT_HERSHEY_COMPLEX,2,(0,0,255),2)
            #5、展示
            cv2.imshow('Video',img)
            #6、释放
            if cv2.waitKey(1) !=-1:
                vc.release()
                cv2.destroyAllWindows()
                break
    

      

    代码可以参考

    https://blog.csdn.net/guoyunfei123/article/details/97112249

    https://www.bilibili.com/video/BV1UJ411V7Q4?from=search&seid=6206820950542698972

     
  • 相关阅读:
    动手动脑5
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每周总结
    2020/10/13
    2020/10/20
  • 原文地址:https://www.cnblogs.com/sclu/p/12626553.html
Copyright © 2011-2022 走看看