windows11 mediapipe c++ 手部关节点检测编译+运行+单步调试

继上次单步调试hello world后,本来想着其他的 mediapipe example 都是顺利成章,但是并不是这样,编译别的 mediapipe example 报了很多错,今天就带来了一个能无缝跑通的版本,亲测有效

首先,必须申明下版本和对应的链接:

感觉最重要的是mediapipe的版本,因为高于这个版本的就是各种各样的神仙ERROR
1. bazel:6.5.0 Releases · bazelbuild/bazel · GitHub

2. mediapipe: 0.10.10 https://github.com/google-ai-edge/mediapipe/releases/tag/v0.10.10

3. visual studio buildtools 2019 Visual Studio 2019 生成号和发布日期 | Microsoft Learn

4. visual C++ Redistributable Latest supported Visual C++ Redistributable downloads | Microsoft Learn

5. msys 这个感觉版本就影响不大了 MSYS2

6. python 3.9.1 Python Release Python 3.9.1 | Python.org

上述安装之后,就是配置环境变量

这个还是参考Mediapipe - Windows10 编译Mediapipe C++版本保姆级教程-优快云博客

这里补充几点:

1. bazel 相关的这么配置完就不用在命令行 set 了

2.python 安装的时候

勾选下方的 Add python.exe to PATH

下面就可以进入编译环节了

1.终端命令行右键以管理员身份运行

2.cd 到 mediapipe-0.10.10目录下

3.直接开编

命令如下:
注意 --action_env 就是自己安装 python 的路径,记得修改下

bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="D:\\python\\python.exe" mediapipe/examples/desktop/hand_tracking:hand_tracking_cpu

4.编译成功

5.开始运行

命令如下:

set GLOG_logtostderr=1
bazel-bin/mediapipe/examples/desktop/hand_tracking/hand_tracking_cpu --calculator_graph_config_file=mediapipe/graphs/hand_tracking/hand_tracking_desktop_live.pbtxt

这时候会提示少 .tflite 模型文件

这里可以直接去 mediapipe/docs/solutions/hands.md at v0.10.10 · google-ai-edge/mediapipe · GitHub

点击这几个地方

把上面的 full model 下载到 mediapipe-0.10.10\mediapipe\modules\palm_detection 目录下

把下面的 model 下载到 mediapipe-0.10.10\mediapipe\modules\hand_landmark 目录下

文件名称不用改,直接下载即可

继续运行

接下来,会自动弹出摄像头窗口,把手伸到摄像头前,观看效果:

到此,就运行完成了 mediapipe c++ 的手部关节点检测。。

想调试的话就直接参考我的上一篇文章

Windows Mediapipe Vscode 单步调试_怎么调用meidapipe-优快云博客

这次调试的文件是这个

调试的 tasks.json 中内容为:

{
  "version": "2.0.0",
  "tasks": [
    // hello world
    {
      "label": "Build",
      "type": "shell",
      "command": "bazel build -c dbg --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH=\"D:\\python\\python.exe\" mediapipe/examples/desktop/hello_world"
    },
    {
      "label": "SetEnv",
      "type": "shell",
      "command": "set GLOG_logtostderr=1"
    },
    {
      "label": "Bazel Build (Hello World)",
      "dependsOn": ["Build", "SetEnv"],
      "dependsOrder": "sequence"
    },

    // face mesh
    {
      "label": "Face mesh build",
      "type": "shell",
      "command": "bazel build -c dbg --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH=\"D://python//python.exe\" mediapipe/examples/desktop/face_mesh:face_mesh_cpu"
    },
    {
      "label": "Bazel Build (Face Mesh)",
      "dependsOn": ["Face mesh build", "SetEnv"],
      "dependsOrder": "sequence"
    },


    // hand tracking
    {
      "label": "Hand tracking build",
      "type": "shell",
      "command": "bazel build -c dbg --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH=\"D://python//python.exe\" mediapipe/examples/desktop/hand_tracking:hand_tracking_cpu"
    },
    {
      "label": "Bazel Build (Hand Tracking)",
      "dependsOn": ["Hand tracking build", "SetEnv"],
      "dependsOrder": "sequence"
    }
  ]
}

调试的 lanuch.json 中内容为:

{
  "version": "0.2.0",
  "configurations": [
    // hello world
    {
      "name": "hello world",
      "preLaunchTask": "Bazel Build (Hello World)",
      "type": "cppvsdbg",
      "request": "launch",
      "program": "${workspaceFolder}/bazel-bin/mediapipe/examples/desktop/hello_world/hello_world.exe",
      "args": [],
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "console": "externalTerminal"
    },

    // face mesh
    {
      "name": "face mesh",
      "preLaunchTask": "Bazel Build (Face Mesh)",
      "type": "cppvsdbg",
      "request": "launch",
      "program": "${workspaceFolder}/bazel-bin/mediapipe/examples/desktop/face_mesh/face_mesh_cpu.exe",
      "args": [
        "--calculator_graph_config_file","${workspaceFolder}/mediapipe/graphs/face_mesh/face_mesh_desktop_live.pbtxt"
      ],
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "console": "externalTerminal"
    },

    // hand tracking
    {
      "name": "hand tracking",
      "preLaunchTask": "Bazel Build (Hand Tracking)",
      "type": "cppvsdbg",
      "request": "launch",
      "program": "${workspaceFolder}/bazel-bin/mediapipe/examples/desktop/hand_tracking/hand_tracking_cpu.exe",
      "args": [
        "--calculator_graph_config_file","${workspaceFolder}/mediapipe/graphs/hand_tracking/hand_tracking_desktop_live.pbtxt"
      ],
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "console": "externalTerminal"
    }
  ]
}

单步调试结果为:

之后使用右上角的调试角标调试即可

本文没涉及到的地方是科学上网,因为下载很多依赖都要从github上,但这个就八仙过海,各显神通叭。。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值