Windows下编译C++ MediaPipe

文章目录

  • 0. 说明
  • 1. 安装 MSYS2
    • 1.1 下载
    • 1.2 安装
  • 2. 安装 Python
    • 2.1 安装
    • 2.2 安装相关包
  • 3. 安装 Visual Studio
  • 4. 安装 Bazel
    • 4.1 安装
    • 4.2 设置 Bazel 环境变量
      • 4.2.1 BAZEL_VS
      • 4.2.2 BAZEL_VC
      • 4.2.3 BAZEL_VC_FULL_VERSION
      • 4.2.4 BAZEL_WINSDK_FULL_VERSION
  • 5. 安装 OpenCV
  • 6. 下载 MediaPipe
  • 7. 运行 Hello World
  • 8. 问题
    • 8.1 Bazel couldn't find a valid Visual C++ build tools installation on your machine
    • 8.2 LNK1104
    • 8.3 LNK2005
    • 8.4 connect timed out
    • 8.5 (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

0. 说明

MediaPipe主页: https://google.github.io/mediapipe/
代码:https://github.com/google/mediapipe
Release:https://github.com/google/mediapipe/releases?page=1

编译运行hello_world示例时不是很顺利,经反复尝试,编译过以下组合:(写此文章时,MediaPipe最新版本为 0.8.9)

MediaPipe Python Visual Studio Bazel OpenCV 是否成功
0.8.9 3.10.2 2019 4.2.2 3.4.10 成功
0.8.9 3.10.2 2017 4.2.2 3.4.10 失败,很多LNK2005的错误
0.8.9 3.8.12 2017 4.2.2 3.4.10 失败,很多LNK2005的错误
0.8.3.2 3.10.2 2017 4.2.2 3.4.10 失败,报PYTHON_BIN_PATH路径的错误
0.8.3.2 3.9.5 2017 4.2.2 3.4.10 失败,报py_toolchain的错误
0.8.3.2 3.8.12 2017 4.2.2 3.4.10 成功,注意要修改WORKSPACE,参看本文章节 8.3
0.8.3.2 3.8.9 2017 4.2.2 3.4.10 成功,注意要修改WORKSPACE,参看本文章节 8.3
0.8.3.2 3.7.9 2017 4.2.2 3.4.10 成功,注意要修改WORKSPACE,参看本文章节 8.3

1. 安装 MSYS2

1.1 下载

下载地址: MSYS2
Windows下编译C++ MediaPipe_第1张图片

1.2 安装

(1) 使用默认安装目录安装,安装在目录 c:\msys64, 则添加目录 C:\msys64\usr\bin 到系统 Path 环境变量中;
(2) 安装完成后,打开MSYS,执行下面两步更新数据:

pacman -Syu
pacman -Su

Windows下编译C++ MediaPipe_第2张图片
在这里插入图片描述

(3)安装其他工具包:

pacman -S git patch unzip

在这里插入图片描述


2. 安装 Python

2.1 安装

下载地址:Python
安装时选择最下面的 添加到Path环境变量
Windows下编译C++ MediaPipe_第3张图片
电脑上已经安装了Anaconda环境,也可以使用Anaconda的base环境 ,则这一步安装python可以省略

2.2 安装相关包

使用以下命令安装numpy和six这两个包

pip install numpy
pip install six

3. 安装 Visual Studio

可以安装Visual Studio 2019 或者更新版本。 安装Visual Studio时注意要勾选Windows 10 SDK。

经测试最新版MediaPipe使用Visual Studio 2017编译hello_world示例时会报很多 LNK2005 的错误,改用Visual Studio 2019则没有这样的错误。
或者使用MediaPipe v0.8.3.2 ,Python 3.8, VS2017 的组合。(注意MediaPipe下载后要修改WORKSPACE,参看本文章节 8.3)

其他更新版本的VS没测试。

Visual Studio 2019 下载地址: Visual Studio 2019
Windows下编译C++ MediaPipe_第4张图片
下载社区版则可。

安装:
Windows下编译C++ MediaPipe_第5张图片
单个组件栏下看看是否有勾选 Windows 10 SDK, 选哪个都行,只要勾选了就可以
Windows下编译C++ MediaPipe_第6张图片


4. 安装 Bazel

4.1 安装

下载地址: Bazel
下载页面有 Pre-release 版 和 Release 版,建议使用 Release 版,写此文章时最新的Release版本为 4.2.2,下载页面拉到最下面可以找到此版本
Windows下编译C++ MediaPipe_第7张图片

下载完成后,建议把 bazel-4.2.2-windows-x86_64.exe 重命名为 bazel.exe,然后放入一个文件夹中,并把这个文件夹添加到系统Path环境变量中。
例如我放到 C:\bazel 这个目录,则把 C:\bazel 添加到系统Path环境变量中。
Windows下编译C++ MediaPipe_第8张图片
Windows下编译C++ MediaPipe_第9张图片

环境变量设置完后, 在cmd中使用 bazel version 查看版本,能查到版本信息则表示安装成功
Windows下编译C++ MediaPipe_第10张图片

4.2 设置 Bazel 环境变量

BAZEL_VS
BAZEL_VC
BAZEL_VC_FULL_VERSION
BAZEL_WINSDK_FULL_VERSION
Windows下编译C++ MediaPipe_第11张图片

4.2.1 BAZEL_VS

VS安装目录
(1)如果安装的Visual Studio Community 2019, 则设置 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
(2)如果安装的Visual Studio Enterprise 2019, 则设置 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise
(3)其他。 版本依照此规则填写,根据你实际安装的版本和目录来填写

4.2.2 BAZEL_VC

与BAZEL_VS类似,只是后面加一个 \VC

4.2.3 BAZEL_VC_FULL_VERSION

填写此文件夹下的目录名
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC Windows下编译C++ MediaPipe_第12张图片

4.2.4 BAZEL_WINSDK_FULL_VERSION

有如下几种方法查找:
(1)安装VS时勾选的 Windows 10 SDK 版本;
(2)控制面板 -> 程序 -> 程序与功能,里面找到 Windows Software Development Kit,版本号如下图所示这里,不过版本号最后一位应该填写 0, 比如这里版本号是 10.0.19041.685,则应填写成 10.0.19041.0 , 有多个版本的情况下,填写其中一个则可
Windows下编译C++ MediaPipe_第13张图片
(3)在目录 C:\Program Files (x86)\Windows Kits\10\bin 下查看
Windows下编译C++ MediaPipe_第14张图片


5. 安装 OpenCV

下载地址: OpenCV
目前MediaPipe使用的OpenCV版本为3.4.10,找到Windows版本下载安装即可


6. 下载 MediaPipe

使用git指令下载:

git clone https://github.com/google/mediapipe.git

下载完后,打开 WORKSPACE 文件,修改 windows_opencv 的目录
Windows下编译C++ MediaPipe_第15张图片
Windows下编译C++ MediaPipe_第16张图片

7. 运行 Hello World

cd mediapipe
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:/Users/vm/AppData/Local/Programs/Python/Python310/python.exe" mediapipe/examples/desktop/hello_world

其中 PYTHON_BIN_PATH=“C:/Users/vm/AppData/Local/Programs/Python/Python310/python.exe” 为Python的安装目录,根据自己Python安装目录填
Windows下编译C++ MediaPipe_第17张图片
Windows下编译C++ MediaPipe_第18张图片
然后,运行hello_world.exe

set GLOG_logtostderr=1
bazel-bin\mediapipe\examples\desktop\hello_world\hello_world.exe

Windows下编译C++ MediaPipe_第19张图片

8. 问题

8.1 Bazel couldn’t find a valid Visual C++ build tools installation on your machine

环境变量中 BAZEL_VS、BAZEL_VC 填写的路径错误,或BAZEL_VC_FULL_VERSION、BAZEL_WINSDK_FULL_VERSION 版本号填写错误

8.2 LNK1104

LNK1104无法打开文件“kernel32.lib”
BAZEL_WINSDK_FULL_VERSION 的 Windows 10 SDK 版本号填写错误

8.3 LNK2005

Windows下编译C++ MediaPipe_第20张图片
建议更换VS试试,我这是用的VS2017编译的,报这样的错误,改用VS2019就没问题了。
如果一点要用VS2017编译的话,可以尝试这个组合:MediaPipe v0.8.3.2 ,Python 3.8, VS2017
使用MediaPipe v0.8.3.2的话,需要修改MediaPipe-0.8.3.2根目录下WORKSPACE这个地方:
Windows下编译C++ MediaPipe_第21张图片

8.4 connect timed out

Windows下编译C++ MediaPipe_第22张图片
网络原因,重新执行编译指令

8.5 (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape

编译 Hello_world 的指令:
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH=“C:/Users/vm/AppData/Local/Programs/Python/Python310/python.exe” mediapipe/examples/desktop/hello_world 中, PYTHON_BIN_PATH路径中使用符号 “/” 或者 “\\”, 不要使用“\”

你可能感兴趣的:(MediaPipe,MediaPipe,c++,人体姿态)