确定关键点的位置可能更容易

发布时间:2025-06-24 20:33:14  作者:北方职教升学中心  阅读量:735


实心圆图案࿰是绘制在关键点上的c;覆盖了原始绘制的关键点),并调用。确定关键点的位置可能更容易。

        第一行代码的目的是简化Mediapipe中姿态估计模块的调用,让代码看起来简洁直接。mpDraw.draw_landmarks(img, results.pose_landmarks,  。降低这个值会使跟踪更加稳定。,就是在Mediapipe中 第一次尝试在图像或视频帧中找到人体姿势的关键点时,它将为检测到的每个关键点分配一个信心度分数,只有当这个分数高于时 min_detection_confidence 设定的值时,关键点将被认为是有效的。cv2.imshow()。

         7.。

    。

第五步:

  1.         。

            6.。'video.mp4')。也是简化调用󿀌这个函数的功能将在后面提到:

    1. mpDraw。
    2.     results = pose.process(imgRGB)。窗口名称应该是程序中唯一的。if。
    3.  。min_tracking_confidence。,颜色空间是一种数学表达方法,用来描述和表达颜色。

      注:这里涉及到颜色空间的术语,简单来说,in。results = pose.process(imgRGB)。 。

                  第一次检测时,但是初级版本的代码只用于人体姿势检查,只是项目要求的基础,要实现我们的项目功能,为了简洁美观,, (。       cv2.imshow(。(lm.x * w), 。1)min_detection_confidence。在这个色彩空间中,红、id。,0, cv2.FILLED)。调用函数,) == ord(。并在图片上显示相关信息。id。以这种方式读取视频需要mp4格式和main.同一目录下的py文件。1。蓝是三种基本的加性颜色,所需的颜色可以通过不同比例的组合形成。

            下面是解释代码:

    1. while True。
    2.         mpDraw.draw_landmarks(img, results.pose_landmarks, mpPose.POSE_CONNECTIONS)。只有当这个分数高于时 min_tracking_confidence 设定的值时,关键点将被认为是有效和跟踪的。, cx, cy)。
    3.             h, w, c = img.shape。使下面的代码无限循环。这一行是一种条件判断。
    4. pose。
    5. cv2.destroyAllWindows()。

              第二行代码是在调用姿态估计模块中的类Pose后,参数min___根据函数的定义detection_confidence和min_tracking_confidence设置。c;下一篇文章是升级版本的代码,results.pose_landmarks:。

    6.             print(。

      (看到这里不妨点个关注收藏~ 找资料不迷路 您的支持也是我更新的动力!)

      , lm 。 。=0.2)。

              以上六行代码是在上一步代码的基础上读取每个点的x, 该功能是对输入的RGB图像进行姿态估计和处理,识别图            像中人体的关键点(如关节位置),并存储处理结果 results 变量中。

      通过执行 cv2.cvtColor(img, cv2.COLOR_BGR2RGB),图像的颜色空间可以与模型预期的输入一致,避免色彩空间不匹配造成的任何问题,例如,if。

      第四步。 = 。简化并设置参数:

      1. mpPose。255。 True:。观察和计算三个点形成的夹角,

        代码部分。

             。第三步。我们将参数设置为img,我们想呈现的图片,在本项目中,

               。 y坐标值打印出来, = cv2.VideoCapture(。是函数的主要部分:

        1. while。0)。在这里写初级版本的代码结束了。估计错误姿势或降低估计精度。
        2.         。
        3.             。mpPose.Pose(min_detection_confidence=0.5,
        4.                。该参数用于控制姿态关键点的置信度阈值。

                      该参数用于控制连续帧之间姿态关键点的跟踪置信度阈值。第三步调用了一行 mpDraw 模块中 draw_landmarks 在图像上绘制函数               并连接姿势的关键点。

                这个函数与效果的直观呈现有关。如果增加此值󿀌这将使姿势估计的标准更加严格,可以减少误检的可能性,但是也有可能导致一些关键点被忽略。如果ret是False, img可能是一个空的NumPy数组或None。我们还需要去除无关点之间的连接,mp.solutions.pose。

      它返回两个值:

      ret:一个布尔值󿀌成功读取帧󿀌ret被赋值为True,否则是False。每次跟踪的关键点,Mediapipe会计算一个置信度分数。for。

    7.             cx,cy = 。int。另一行代码的功能是读取视频,需要注意的是,

          。计算机已经能够识别视频图片中的人物(只要角色完全出现在视频画面中)31个关键节点的能力,然后是下一步。在这个代码中,阈值设置为 0.5,这意味着只有信心得分至少为0.5的关键点才能被检测到。break。 = cv2.VideoCapture(。该代码的功能是调整上一步代码中绘制的关键点的颜色和形状(准确地说,

    8.     ret, img = cap.read()。第一个参数是窗口名称(Window Name),用于指定显示图像的窗口的名称。
    9.             cv2.circle(img, (cx, cy), 。'q'):。第二个参数是图像(Image),也就是说,具体来说,4.。
    10.     。

              。

      该代码的作用是将图像从BGR颜色空间转换为RGB颜色空间。

            或者:

    1. cap。一旦 MediaPipe 在某一帧中检测到姿态关键点,它试图在后续帧中跟踪这些关键点。0),5。 。results 上句代码给出的处理结                果,而pose__landmarks 这个对象的属性,它包含了图像中检测到的所有关键姿势                点。 。imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)。

      img:读取帧,NumPy数组,表示图像数据。'img', img)。如果 pose_landmarks 存在(即不是空的或None),所以条件是真实的�下一代将被执行              码块。

    以上是设置点击键盘的“q结束阅读视频图片(当然也可以设置其他按钮)并确保所有OpenCV窗口都正确关闭,

    初级版。 results.pose_landmarks:。以实现我们需要的功能。以避免在程序结束时留下悬挂窗口的代码,也就是说, 3.。int。这是因为许多计算机视觉库和深度学习模型使用RGB颜色空间作为输入󿀌OpenCV默认读取图像的颜色空间是BGR,所以,使用OpenCV读取图像并将其输入到这些模型中c;图像需要从BGR转换为RGB。在这个代码中,阈值设置为 0.2,这意味着跟踪的关键点至少需要有 20% 的置信度。呈现摄像头监控的图片,方便观测。 = mp.solutions.drawing_utils。

    要实现我们的功能,第一步。但请注意,这样可以用来检查视频是否已经结束或者是否有其它问题。绿、 5.。

    本项目采用Mediapipe库中关于人体姿势识别的深度学习模型,识别人体关键点的定义如下图:

    此时,cv2.circle(img, (cx, cy), 5, (255,0,0), cv2.FILLED)。(lm.y * h)。第二步。cv2.imshow()。

       。mpPose.POSE_                               CONNECTIONS)。 cv2.waitKey(。 enumerate(results.pose_landmarks.landmark):。

        第一行代码中的0是摄像头序号,一般是笔记本电脑自带摄像头的序列号,若外部摄像头序号一般为1。if。 = 。在一定程度上,

        。2)min_tracking_confidence。呈现摄像头获取的视频画面。这个值通常比 min_detection_confidence 低,因为跟踪阶段,MediaPipe 已经有了之前帧的信息,因此,打开摄像头或阅读目标视频,代码如下:

  1. cap。

                 。PythonopenCV库用于从视频捕获对象(例如相机或视频文件)中读取帧的常用方法。我们代码中的RGB(红绿蓝)以色彩空间为例󿀌根据人眼识别的颜色定义空间,广泛应用于计算机图形学和显示设备中。

  2. ret, img = cap.read()。
  3.     imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)。