You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MediaPipe库时如何隐藏底层视频流仅显示landmark关键点及2D标注

实现方案

核心逻辑

你当前的代码是直接在摄像头采集的原始视频帧上绘制关键点,因此会保留原始视频作为背景。只需要在得到MediaPipe的检测结果后,创建一张和原始帧尺寸完全一致的纯色空白画布,再将所有关键点和连线标注绘制在这张空白画布上展示即可,检测环节依然使用原始帧执行,不会影响识别精度。

修改后可运行代码

# 依赖导入
import cv2
import mediapipe as mp
import numpy as np

mp_drawing = mp.solutions.drawing_utils
mp_holistic = mp.solutions.holistic
cap = cv2.VideoCapture(0)

# 初始化MediaPipe实例
with mp_holistic.Holistic(min_detection_confidence=0.5, min_tracking_confidence=0.5) as holistic:
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        frame.flags.writeable = False
        
        # 执行关键点检测
        results = holistic.process(frame)

        # 创建空白画布:当前为纯黑背景,要纯白背景可替换为 blank_frame = np.full(frame.shape, 255, dtype=np.uint8)
        blank_frame = np.zeros(frame.shape, dtype=np.uint8)

        # 在空白画布上绘制标注(原代码256颜色值溢出,已修正为255,可自行调整颜色参数适配背景)
        mp_drawing.draw_landmarks(blank_frame, results.face_landmarks, mp_holistic.FACEMESH_TESSELATION, 
                                 mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=1, circle_radius=1),
                                 mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=1, circle_radius=1)
                                 )
        mp_drawing.draw_landmarks(blank_frame, results.pose_landmarks, mp_holistic.POSE_CONNECTIONS,
                                 mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=2, circle_radius=2),
                                 mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=1, circle_radius=1)
                                 )
        mp_drawing.draw_landmarks(blank_frame, results.right_hand_landmarks, mp_holistic.HAND_CONNECTIONS, 
                                 mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=2, circle_radius=2),
                                 mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=1, circle_radius=1)
                                 )
        mp_drawing.draw_landmarks(blank_frame, results.left_hand_landmarks, mp_holistic.HAND_CONNECTIONS, 
                                 mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=2, circle_radius=2),
                                 mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=1, circle_radius=1)
                                 )
        
        cv2.imshow('关键点标注', blank_frame)
        if cv2.waitKey(10) & 0xFF == ord('q'):
            break
        
cap.release()
cv2.destroyAllWindows()

可选调整

  • 可修改blank_frame的生成逻辑自定义背景颜色,对应数值采用OpenCV的BGR色彩规则即可
  • 可修改DrawingSpec里的color、thickness、circle_radius参数调整关键点和连线的显示效果,适配不同背景的视觉需求

内容的提问来源于stack exchange,提问作者aidan.goetzinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:27:03