使用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
相关产品推荐
相关产品推荐

