之前搞人体没有少用Mediapipe这个库,但都是以python的方式调用,有许多源码原理不清楚,最近打算看看源码,但是几乎没有调试Mediapipe的教程,所以自己调通后记录下
首先安装各种所需环境就参考这位大佬的文章,非常详细,本文就不过多赘述了,本人亲测可行
Mediapipe - Windows10 编译Mediapipe C++版本保姆级教程-优快云博客
这是参考上述文章后,自己的效果
接下来进入重点部分
第一次进入项目请以管理员身份打开终端,cd到 github 克隆下来的 mediapipe-master 的目录,然后运行 code . 打开 vscode
在这个地方点击输入后 > 选择
把打开的 UI 删掉,这时候会在项目根目录下出现 .vscode 目录,目录中含有 c_cpp_properties.json 文件(这个文件主要是配置C++编译器路径)
这个文件中配置如下:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"${vcpkgRoot}/x64-windows/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"],
"windowsSdkVersion": "10.0.22621.0",
"cStandard": "c17",
"cppStandard": "c++17",
"compilerPath": "D:/visual_studio/VC/Tools/MSVC/14.39.33519/bin/Hostx86/x86/cl.exe",
"intelliSenseMode": "windows-msvc-x64"
}
],
"version": 4
}
其中 compilerPath 替换为自己的 visual studio 的安装路径,进去确保后面的 cl.exe 存在
windowsSdkVersion替换为自己的版本,最后一个点之后置 0 即可
windowsSdkVersion在控制面板里的卸载程序中,找到如下这一列
做完上面的之后,继续上方点击输入后 > 选择
之后会在.vscode 中出现 tasks.json
这个文件中配置如下:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build",
"type": "shell",
"command": "bazel build -c dbg --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH=\"D:\\anaconda\\python.exe\" mediapipe/examples/desktop/hello_world"
},
{
"label": "SetEnv",
"type": "shell",
"command": "set GLOG_logtostderr=1"
},
{
"label": "Bazel Build (Run Opt)",
"dependsOn": ["Build", "SetEnv"],
"dependsOrder": "sequence"
}
]
}
其中 label 为 Build 是编译代码部分
SetEnv 是为了运行可执行代码而进行的环境设置
之后进入vscode左侧这个地方后点击创建launch,json文件
在launch.json中配置如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "(windows) Bazel Launch Run Opt",
"preLaunchTask": "Bazel Build (Run Opt)",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/bazel-bin/mediapipe/examples/desktop/hello_world/hello_world.exe",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}/bazel-bin/mediapipe/examples/desktop/hello_world/hello_world.exe.runfiles",
"environment": [],
"console": "externalTerminal"
}
]
}
配置后,进入 mediapipe/examples/desktop/hello_world 目录
打开 helloword.cc
右上角点击
之后的弹窗选择刚刚配置的
之后等待进入调试页面,等待程序运行,之后程序就在停在
点击右上角弹出的
即可单步执行代码,我自己的效果如下,在 return 0 之前效果:
到此单步调试完成。
值得记录的是,每次都以管理员的形式进入很麻烦
这里提供一种点击进入的方法
点击vscode文件,将工作区另存为...
将.code-workspace保存在项目根目录下即可
之后再根目录下新建 vscode.txt
其中内容为:
call "D:\visual_studio_community\VC\Auxiliary\Build\vcvars64.bat"
code .\mediapipe_vscode.code-workspace
exit
记得把 call 之后的路径修改为自己的
然后将 vscode.txt 文件名后缀改为 bat (即文件名为:vscode.bat)
这样再次打开项目直接在目录中点击该 vscode.bat 即可
要不直接进入 vscode 运行 msvc 的项目会报错
cl.exe build and debug is only usable when VS Code isrun from the Developer Command Prompt for VS.
到此,就能够调试 mediapipe 了,后续如果有时间会继续调试其他功能记录在优快云