Windows下编译C++ MediaPipe

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)

MediaPipePythonVisual StudioBazelOpenCV是否成功
0.8.93.10.220194.2.23.4.10成功
0.8.93.10.220174.2.23.4.10失败,很多LNK2005的错误
0.8.93.8.1220174.2.23.4.10失败,很多LNK2005的错误
0.8.3.23.10.220174.2.23.4.10失败,报PYTHON_BIN_PATH路径的错误
0.8.3.23.9.520174.2.23.4.10失败,报py_toolchain的错误
0.8.3.23.8.1220174.2.23.4.10成功,注意要修改WORKSPACE,参看本文章节 8.3
0.8.3.23.8.920174.2.23.4.10成功,注意要修改WORKSPACE,参看本文章节 8.3
0.8.3.23.7.920174.2.23.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路径中使用符号 “/” 或者 “\\”, 不要使用“\”

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值