文章目录
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
1.2 安装
(1) 使用默认安装目录安装,安装在目录 c:\msys64
, 则添加目录 C:\msys64\usr\bin
到系统 Path 环境变量中;
(2) 安装完成后,打开MSYS,执行下面两步更新数据:
pacman -Syu
pacman -Su
(3)安装其他工具包:
pacman -S git patch unzip
2. 安装 Python
2.1 安装
下载地址:Python
安装时选择最下面的 添加到Path环境变量
电脑上已经安装了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 10 SDK, 选哪个都行,只要勾选了就可以
4. 安装 Bazel
4.1 安装
下载地址: Bazel
下载页面有 Pre-release 版 和 Release 版,建议使用 Release 版,写此文章时最新的Release版本为 4.2.2,下载页面拉到最下面可以找到此版本
下载完成后,建议把 bazel-4.2.2-windows-x86_64.exe 重命名为 bazel.exe
,然后放入一个文件夹中,并把这个文件夹添加到系统Path环境变量中。
例如我放到 C:\bazel
这个目录,则把 C:\bazel
添加到系统Path环境变量中。
环境变量设置完后, 在cmd中使用 bazel version 查看版本,能查到版本信息则表示安装成功
4.2 设置 Bazel 环境变量
BAZEL_VS
BAZEL_VC
BAZEL_VC_FULL_VERSION
BAZEL_WINSDK_FULL_VERSION
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
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 , 有多个版本的情况下,填写其中一个则可
(3)在目录 C:\Program Files (x86)\Windows Kits\10\bin 下查看
5. 安装 OpenCV
下载地址: OpenCV
目前MediaPipe使用的OpenCV版本为3.4.10,找到Windows版本下载安装即可
6. 下载 MediaPipe
使用git指令下载:
git clone https://github.com/google/mediapipe.git
下载完后,打开 WORKSPACE
文件,修改 windows_opencv
的目录
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安装目录填
然后,运行hello_world.exe
set GLOG_logtostderr=1
bazel-bin\mediapipe\examples\desktop\hello_world\hello_world.exe
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
建议更换VS试试,我这是用的VS2017编译的,报这样的错误,改用VS2019就没问题了。
如果一点要用VS2017编译的话,可以尝试这个组合:MediaPipe v0.8.3.2 ,Python 3.8, VS2017
使用MediaPipe v0.8.3.2的话,需要修改MediaPipe-0.8.3.2根目录下WORKSPACE
这个地方:
8.4 connect timed out
网络原因,重新执行编译指令
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路径中使用符号 “/” 或者 “\\”, 不要使用“\”