使用mediapipe和OpenCV实现摄像头实时人脸检测

# 摄像头实时人脸检测
# opencv
import time

import cv2
# mediapipe ai工具包
import mediapipe as mp
# 进度条库
from tqdm import tqdm

# 导入模型
mp_face_detection = mp.solutions.face_detection
model = mp_face_detection.FaceDetection(
    min_detection_confidence=0.5,  # 置信度阈值,过滤掉小于置信度的预测框
    model_selection=1,  # 选择模型,0 适用于人脸离摄像头比较近(2米内),1 适用于比较远(5米以内)
)
# 导入可视化函数以及可视化样式
mp_drawing = mp.solutions.drawing_utils
# 关键点样式
keypoint_style = mp_drawing.DrawingSpec(thickness=5, circle_radius=3, color=(0, 255, 0))
# 人脸预测框样式
bbox_style = mp_drawing.DrawingSpec(thickness=5, circle_radius=3, color=(255, 0, 0))


# 处理单帧的函数
def process_frame(img):
    # 记录该帧开始处理的时间
    start_time = time.time()
    # BGR转RGB
    img_RGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    # 将RGB输入模型预测结果
    results = model.process(img_RGB)
    if results.detections:  # 只有检测出人脸的时候才可视化
        # 可视化人脸框和人脸关键点
        for detection in results.detections:
            mp_drawing.draw_detection(img,
                                      detection,
                                      keypoint_drawing_spec=keypoint_style,
                                      bbox_drawing_spec=bbox_style)
    # 记录该帧完毕处理的时间
    end_time = time.time()
    # 计算每秒处理图像帧数FPS
    FPS = 1 / (end_time - start_time)
    scaler = 1
    # 在图像上写FPS数值,参数依次为图片、添加的文字、左上角坐标、字体、字体大小、颜色、字体粗细
    img = cv2.putText(img, 'FPS ' + str(int(FPS)), (25 * scaler, 50 * scaler), cv2.FONT_HERSHEY_SIMPLEX, 1.25 * scaler,
                      (0, 0, 255), 1)
    return img


# 调用摄像头获取每帧

# 获取摄像头
cap = cv2.VideoCapture(0)
# 打开cap
cap.open(0)
# 无限循环,直到break被触发
while cap.isOpened():
    # 获取画面
    success, frame = cap.read()
    if not success:
        print('出错啦!')
        break
    #     处理帧函数
    frame = process_frame(frame)
    #     展示处理后的三通道图像
    cv2.imshow('my_window', frame)
    # 按q或Esc退出
    if cv2.waitKey(1) in [ord('q'), 27]:
        break
# 关闭摄像头
cap.release
# 关闭窗口图像
cv2.destoryAllWindows()

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现人体姿态识别的具体流程如下: 1. 安装 OpenCVMediaPipe 安装 OpenCVMediaPipe,以便使用它们的功能来处理图像实现人体姿态识别。 2. 导入必要的 通过导入 OpenCVMediaPipe ,以及其他必要的来准备编写代码。 ```python import cv2 import mediapipe as mp ``` 3. 加载模型 在代码中加载用于人体姿态识别的预训练模型,这可以通过使用 MediaPipe 的 Pose 模型来完成。 ```python mp_pose = mp.solutions.pose pose = mp_pose.Pose() ``` 4. 读取图像 使用 OpenCV 读取要进行人体姿态识别图像。 ```python img = cv2.imread('image.jpg') ``` 5. 预处理图像 为了进行人体姿态识别,需要对输入图像进行预处理。首先将其转换为灰度图像,然后将其缩放到适当的大小。 ```python img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_resized = cv2.resize(img_gray, (256, 256)) ``` 6. 检测人体姿态 使用 MediaPipe 的 Pose 模型来检测人体姿态。 ```python results = pose.process(img_resized) ``` 7. 绘制关键点 对于每个检测到的姿势,可以使用 OpenCV 在输入图像中绘制关键点。 ```python if results.pose_landmarks is not None: for lm in results.pose_landmarks.landmark: x, y = int(lm.x * img.shape[1]), int(lm.y * img.shape[0]) cv2.circle(img, (x, y), 5, (0, 255, 0), -1) ``` 8. 显示结果 最后,可以使用 OpenCV 将结果显示在屏幕上,并等待用户退出。 ```python cv2.imshow('Pose Detection', img) cv2.waitKey(0) ``` 这就是使用 MediaPipeOpenCV 实现人体姿态识别的基本流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值