OpenCV入门简单的人脸识别项目

在学会图像处理和打开摄像头获取视频流后,就可以开展简单的人脸识别项目。


人脸识别首先需要检测到人脸。

检测人脸区域并绘制矩形

# 加载图片
    img = face_recognition.load_image_file("lena.png")
    # 检测人脸区域
    f_pos = face_recognition.face_locations(img)[0]
    print("top,right.bottom,left", f_pos)
    # 在人脸区域绘制矩形
    cv2.rectangle(img,(f_pos[3],f_pos[0]),(f_pos[1],f_pos[2]),(0,0,200),2)
    cv2.imshow("",img)
    cv2.waitKey(0)

选张人脸图片检测一下。
在这里插入图片描述
大致的可以检测到人脸区域。

多个人脸进行识别

单个人脸识别后就需要进行多个人脸识别。

img = face_recognition.load_image_file("6.jpg")
    faces = face_recognition.face_locations(img)
    for face in faces:
        cv2.rectangle(img,(face[3],face[0]),(face[1],face[2]),(0,0,210),2)
    cv2.imshow("",img)
    cv2.waitKey(0)

加一个for循环即可。
在这里插入图片描述

绘制五官位置

img = face_recognition.load_image_file("18.jpg")
    faces = face_recognition.face_locations(img)
    # 五官位置
    marks = face_recognition.face_landmarks(img)
    for word,mark in enumerate(marks):
        for key,ms in mark.items():
            for i in range(len(ms)):
                point = ms[i]
                # 圆
                cv2.circle(img,(point[0],point[1]),2,(0,200,0))
    cv2.imshow("", img)
    cv2.waitKey(0)

在这里插入图片描述

视频检测人脸

图片检测人脸后,就需要在视频中检测到人脸。

# 摄像头
    # cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
    cap = cv2.VideoCapture(".mp4")
    while True:
        ok,frame = cap.read()
        if ok :
            # 从视频流中检测人脸
            faces = face_recognition.face_locations(frame)
            for (top, right, bottom, left) in faces:
                cv2.rectangle(frame,(left,top),(right,bottom),(0,0,100),2)
        cv2.imshow("", frame)
        cv2.waitKey(1)
    cap.release()
    cv2.destroyAllWindows()

可以选择视频文件或者摄像头!

人脸识别

检测到人脸后就需要进行人脸比对。

obama = face_recognition.load_image_file("1.jpg")
    biden = face_recognition.load_image_file("1.jpg")
    mei = face_recognition.load_image_file("1.jpg")
    # 对图片编码
    obamacode = face_recognition.face_encodings(obama)[0]
    bidencode = face_recognition.face_encodings(biden)[0]
    meicode = face_recognition.face_encodings(mei)[0]
# 已录入的人脸
    headimgs = [obamacode,bidencode]
    # 距离计算
    # dist = face_recognition.face_distance(headimgs,meicode)
    # print(dist)
    # 人脸匹配
    rs = face_recognition.compare_faces(headimgs,meicode,tolerance=0.5)
    print("摄像头中的是: ",rs)

将检测到的人脸进行编码并与已录入的人脸中进行比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南蓬幽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值