人脸关键点识别

简介: 【6月更文挑战第19天】

只显示关键点,不显示摄像头画面

image.png

import numpy as np
from imutils import face_utils
import dlib
import cv2

p = "shape_predictor_68_face_landmarks.dat"
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(p)

cap = cv2.VideoCapture(0)

while True:

    _, image = cap.read()
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    rects = detector(gray, 0)
    # 尺寸可以根据需要调整,绘制新图像,用于只显示关键点,不显示人脸
    image = np.zeros((500, 500, 3), dtype="uint8")

    for (i, rect) in enumerate(rects):

        shape = predictor(gray, rect)
        shape = face_utils.shape_to_np(shape)

        for j, (x, y) in enumerate(shape):
            cv2.circle(image, (x, y), 1, (0, 255, 0), -1)
            # cv2.putText(image, str(j + 1), (x + 5, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 1)

    cv2.imshow("Output", image)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break

cv2.destroyAllWindows()
cap.release()

现有代码中,导致摄像头画面不显示的原因可能是在循环中创建了一个空白的图像数组,并且没有将检测到的人脸标记绘制到原始图像上,而是绘制到了这个空白图像上。具体来说,问题出在以下这段代码:

image = np.zeros((500, 500, 3), dtype="uint8")  # 尺寸可以根据需要调整

这行代码创建了一个500x500像素的空白图像,并且后续的操作都是在这个空白图像上进行的。因此,原始的摄像头画面并没有被显示出来。

为了让人脸正常显示,你需要将人脸标记绘制到原始图像上,而不是空白图像上。以下是修改后的代码段:

# ... 省略之前的代码 ...

while True:
    _, image = cap.read()  # 读取原始图像
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    rects = detector(gray, 0)

    for (i, rect) in enumerate(rects):
        shape = predictor(gray, rect)
        shape = face_utils.shape_to_np(shape)

        # 绘制人脸标记到原始图像上
        for j, (x, y) in enumerate(shape):
            cv2.circle(image, (x, y), 1, (0, 255, 0), -1)
            # cv2.putText(image, str(j + 1), (x + 5, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 1)

    # 显示原始图像,上面有绘制的人脸标记
    cv2.imshow("Output", image)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break

# ... 省略之后的代码 ...

注意,我已经将创建空白图像的代码行删除了,并且将绘制人脸标记的代码移动到了原始图像上。这样,摄像头的画面就会正常显示,并且上面会有人脸标记。

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 计算机视觉
yolov8人脸识别-脸部关键点检测(代码+原理)
yolov8人脸识别-脸部关键点检测(代码+原理)
510 0
|
固态存储 计算机视觉 异构计算
一起来学MediaPipe(一)人脸及五官定位检测
一起来学MediaPipe(一)人脸及五官定位检测
2953 0
一起来学MediaPipe(一)人脸及五官定位检测
|
9天前
人脸关键点识别
【6月更文挑战第21天】
10 4
人脸关键点识别
|
10天前
|
机器学习/深度学习 计算机视觉
人脸关键点
【6月更文挑战第20天】
18 5
|
23天前
|
计算机视觉 Python
人脸关键点
【6月更文挑战第7天】
11 2
|
16天前
|
机器学习/深度学习 XML 算法
第5章 人脸检测和识别
第5章 人脸检测和识别
|
2月前
|
机器学习/深度学习 人工智能 图计算
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
49 0
|
11月前
|
安全 Java 开发工具
从零玩转人脸识别之RGB人脸活体检测1
从零玩转人脸识别之RGB人脸活体检测
229 0
|
11月前
|
前端开发 计算机视觉
从零玩转人脸识别之RGB人脸活体检测2
从零玩转人脸识别之RGB人脸活体检测
113 0
|
11月前
|
前端开发 JavaScript Java
从零玩转人脸识别之RGB人脸活体检测3
从零玩转人脸识别之RGB人脸活体检测
93 0