工程完整的介绍:https://google.github.io/mediapipe/
工程github链接:https://github.com/google/mediapipe
环境配置在https://google.github.io/mediapipe/getting_started/install
该库实现功能如下,并提供多平台多语言的使用代码,可以完成相关效果的测试
这里我需要在Windows10系统中编译mediapipe的C++工程。官方写的操作流程比较简单,这里记录下自己完整的配置过程。前两天新搞了个windows系统,电脑环境比较原始,只装了anaconda。
整体自己安装过程比较顺畅。其实该编译过程,主要是在电脑上安装的基础软件或者库比较多,真正mediapipe工程的某一个功能的编译,一条长命令即可。
本机环境:
- Windows10
msys2-x86_64-20220603
anaconda 的base环境(python3.9.12+tensorflow2.9.1)
VS2019
bazel-5.2.0-windows-x86_64
opencv-3.4.10-vc14_vc15
mediapipe-master(此时master为v0.8.10.2)
1 MSYS2
1.1 下载
1.2 安装
- 1 双击下载的文件默认安装。我这里选择默认的安装路径安装【C:\msys64】
- 2 系统环境变量设置
需要将【C:\msys64\usr\bin
】添加到系统环境变量中。注意确定路径是自己安装的路径
- 3 升级msys2包数据库、基础数据库
打开 MSYS2
输入命令【pacman -Syu
】
输入命令【pacman -Su
】
- 4 安装必要包 unzip
输入命令【pacman -S git patch unzip
】
2 Python
2.1 安装python环境
- 方式1:直接安装python
- 下载链接:https://www.python.org/downloads/windows/
- 安装必要的包
pip install numpy
pip install six
pip install tensorflow
- 方式2:anaconda的base的环境
因为我电脑安装了anaconda,所以就直接使用了anconda 的base的Python环境,当前我的版本为3.9.12。注意anaconda要添加环境变量。
此时base环境下只缺TensorFlow, 当前默认安装TensorFlow的版本为tensorflow2.9.1。
打开终端cmd.exe运行如下命令:
conda activate base
pip install tensorflow
2.2 验证安装环境
终端中python环境下,输入以下命令:
python import six import numpy import tensorflow ## 成功导入tensorflow环境 exit()
3 安装VS2019 和 WinSDK
3.1 下载
VS 官网:https://visualstudio.microsoft.com/zh-hans/free-developer-offers/
下载免费的社区版即可。官网直接点进去是VS2022,但我还是下载了VS2019使用。下载旧版本需要登录账号。
往下拉到底端
3.2 安装
安装时一定要勾选如下两项。
一个会安装 windows software development kit;一个会安装cl.exe。后面配置和编译过程中会使用
4 Bazel
4.1 下载并安装
下载链接:https://github.com/bazelbuild/bazel/releases
下载后,将【bazel-5.2.0-windows-x86_64.exe】修改为【bazel.exe】,方便后面的使用。
我为了集中测试Mediapipe,所以将所有的相关文件都放在同一个路径下,这里我将【bazel.exe】放在【E:\MediaPipe】,并将该路径添加到系统环境变量中
完整后,重新打开个终端cmd,输入命令【bazel version
】确保正确配置成功
4.2 设置Bazel 变量
打开MSYS2(注意不是cmd.exe),依次输入下面的命令(要根据自己电脑的环境具体修改)。
注意:这里路径的括号需要进行转义。set BAZEL_VS=C:\Program Files \(x86\)\Microsoft Visual Studio\2019\Community set BAZEL_VC=C:\Program Files \(x86\)\Microsoft Visual Studio\2019\Community\VC set BAZEL_VC_FULL_VERSION=14.29.30036 set BAZEL_WINSDK_FULL_VERSION=10.0.19041.685
其中:
【C:\Program Files (x86)\Microsoft Visual Studio】是自己的VS2019 的安装路径
【14.29.30036】是【C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC】路径下的一个文件夹名
【10.0.19041.685】是【windows software development kit】的信息,
5 OpenCV 下载
官方说明当前使用的OpenCV 3.4.10,为了避免出现库不兼容的问题,遵循官方文档。
下载链接:https://opencv.org/releases/
下载后直接双击,选择路径进行解压。我这里直接解压到【E:\MediaPipe】路径。这里不需要设置系统环境变量。
6 Mediapipe 工程编译
6.1 工程下载与设置
工程下载:
git clone https://github.com/google/mediapipe.git
或者直接到guthub下直接下载工程
然后将OpenCV的路径修改到工程中:【工程根路径下的WORKSPACE】文件中,搜索【windows_opencv】,将【path】替换成自己的OpenCV的路径 并保存。
6.2 编译hellow world
windows上编译需要添加python的环境,
--action_env PYTHON_BIN_PATH="C://path//to//python.exe"
。
那么如何查看自己的python安装路径呢,因为我这里使用的是anaconda,所以直接在cmd终端输入【conda list
】,可以直接查看到conda的安装路径。
- windows 编译的命令:
编译成功如下图:bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:\\ProgramData\\Anaconda3\\python.exe" mediapipe/examples/desktop/hello_world
- 运行hellow world
运行成功如下图:set GLOG_logtostderr=1 bazel-bin\mediapipe\examples\desktop\hello_world\hello_world.exe
6.3 编译官网提供的手指关节点检测、人脸检测等
- hand_tracking
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:\\ProgramData\\Anaconda3\\python.exe" mediapipe/examples/desktop/hand_tracking:hand_tracking_cpu set GLOG_logtostderr=1 bazel-bin\mediapipe\examples\desktop\hand_tracking\hand_tracking_cpu.exe --calculator_graph_config_file=mediapipe\graphs\hand_tracking\hand_tracking_desktop_live.pbtxt
- face_detection
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:\\ProgramData\\Anaconda3\\python.exe" mediapipe/examples/desktop/face_detection:face_detection_cpu set GLOG_logtostderr=1 bazel-bin\mediapipe\examples\desktop\face_detection\face_detection_cpu.exe --calculator_graph_config_file=mediapipe\graphs\face_detection\face_detection_desktop_live.pbtxt
- object_detection
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:\\ProgramData\\Anaconda3\\python.exe" mediapipe/examples/desktop/object_detection:object_detection_cpu set GLOG_logtostderr=1 bazel-bin\mediapipe\examples\desktop\object_detection\object_detection_cpu.exe --calculator_graph_config_file=mediapipe\graphs\object_detection\object_detection_desktop_live.pbtxt
- object_tracking
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:\\ProgramData\\Anaconda3\\python.exe" mediapipe/examples/desktop/object_tracking:object_tracking_cpu set GLOG_logtostderr=1 bazel-bin\mediapipe\examples\desktop\object_tracking\object_tracking_cpu.exe --calculator_graph_config_file=mediapipe\graphs\tracking\object_detection_tracking_desktop_live.pbtxt
- iris_tracking
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:\\ProgramData\\Anaconda3\\python.exe" mediapipe/examples/desktop/iris_tracking:iris_tracking_cpu set GLOG_logtostderr=1 bazel-bin\mediapipe\examples\desktop\iris_tracking\iris_tracking_cpu.exe --calculator_graph_config_file=mediapipe\graphs\iris_tracking\iris_tracking_cpu.pbtxt
- hair_segmentation
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:\\ProgramData\\Anaconda3\\python.exe" mediapipe/examples/desktop/hair_segmentation:hair_segmentation_cpu set GLOG_logtostderr=1 bazel-bin\mediapipe\examples\desktop\hair_segmentation\hair_segmentation_cpu.exe --calculator_graph_config_file=mediapipe\graphs\hair_segmentation\hair_segmentation_desktop_live.pbtxt