(请先确保当前用户名不包含中文,再进行后续操作)

安装 msys2

安装python

  1. 下载地址: https://www.msys2.org/

  2. 安装完成后 ,打开 msys2

    1. 在打开MSYS 命令行中输入 pacman -Syu

    2. 执行结束后,在命令行中输入 pacman -Su

    3. 执行结束后,在命令行输入 pacman -S git patch unzip

        安装的python版本是 3.12.0

安装 Visual Studio 2019

        打开Visual Studio Installer 安装C++基本的开发环境和WinSDK :

下载 Bazel

  1. 在 https://github.com/bazelbuild/bazel/tags 找版本 6.5.0 下载 bazel-6.5.0-windows-x86_64.ex

  2. 下载的 bazel-6.5.0-windows-x86_64.exe 文件不需要安装,这个是一个命令行工具。 放在目录 D:\Bazel 中,并将 bazel-6.5.0-windows-x86_64.exe 改名为 bazel.exe

安装opencv

  1. 直接下载的opencv 在后续编译过程中会遇到问题,缺少一些API, 还需要编译好的 contrib

  2. 这里直接用编译好的 opencv库, 这个opencv的版本是 4.8.0 , 将压缩包解压到 D:\opencv\opencv480
     

下载mediapipe库
 

        下载地址 https://github.com/google-ai-edge/mediapipe ,选择Tag版本 v0.10.14 ,下载源码或用git clone代码到本地。
 

配置环境变量

  1. 在 path中增加msys路径 C:\msys64\usr\bin

  2. 在path中增加bazel路径 D:\Bazel

  3. 在MSYS上设置Bazel变量而不是在cmd.exe中:BAZEL_VS ,BAZEL_VC,BAZEL_VC_FULL_VERSION,BAZEL_WINSDK_FULL_VERSION,

        示例:

        set BAZEL_VS=D:\Program Files \(x86\)\Microsoft Visual Studio\2019\Community

        set BAZEL_VC=D:\Program Files \(x86\)\Microsoft Visual Studio\2019\Community\VC

        set BAZEL_VC_FULL_VERSION=14.29.30133

        set BAZEL_WINSDK_FULL_VERSION=10.1.19041.5609

       4. 增加 BAZEL_SH=C:\msys64\usr\bin\bash.exe

    修改mediapipe 的环境配置

    1. 打开 mediapie/WORKSPACE, 找到 windows_opencv 配置选项 ,修改opencv的真实路径

      new_local_repository(
          name = "windows_opencv",
          build_file = "@//third_party:opencv_windows.BUILD",
          path = "D:\\opencv\\opencv480", //替换为你的真实解压路径
      )

       2. 打开 third_party/opencv_windows.BUILD ,修改opencv的路径为:
       

      licenses(["notice"])  # BSD license
      
      exports_files(["LICENSE"])
      
      OPENCV_VERSION = "480"  # 3.4.10
      
      config_setting(
          name = "opt_build",
          values = {"compilation_mode": "opt"},
      )
      
      config_setting(
          name = "dbg_build",
          values = {"compilation_mode": "dbg"},
      )
      
      # The following build rule assumes that the executable "opencv-3.4.10-vc14_vc15.exe"
      # is downloaded and the files are extracted to local.
      # If you install OpenCV separately, please modify the build rule accordingly.
      cc_library(
          name = "opencv",
          srcs = select({
              ":opt_build": [
                  "lib/opencv_world" + OPENCV_VERSION + ".lib",
                  "bin/opencv_world" + OPENCV_VERSION + ".dll",
              ],
              ":dbg_build": [
                  "lib/opencv_world" + OPENCV_VERSION + "d.lib",
                  "bin/opencv_world" + OPENCV_VERSION + "d.dll",
              ],
          }),
          hdrs = glob(["include/opencv2/**/*.h*"]),
          includes = ["include/"],
          linkstatic = 1,
          visibility = ["//visibility:public"],

      尝试编译 Hello World

      在 mediapipe的根目录中,打开cmd, 输入
       

      bazel build -c opt --action_env PYTHON_BIN_PATH="C://Python312//python.exe" --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world:hello_world

        由于网络问题,可以在mediapipe根目录下的.bazelrc中添加网路代理设置(端口设置根据实际修改)
       

      # For build actions
      build --action_env=http_proxy=http://127.0.0.1:7897 
      build --action_env=https_proxy=http://127.0.0.1:7897
      build --action_env=HTTP_PROXY=http://127.0.0.1:7897
      build --action_env=HTTPS_PROXY=http://127.0.0.1:7897
      # For external repository fetch
      common --repo_env=http_proxy=http://127.0.0.1:7897
      common --repo_env=https_proxy=http://127.0.0.1:7897
      common --repo_env=HTTP_PROXY=http://127.0.0.1:7897
      common --repo_env=HTTPS_PROXY=http://127.0.0.1:7897
      common --repo_env=no_proxy=localhost,127.0.0.1
      common --repo_env=NO_PROXY=localhost,127.0.0.1
      

      尝试编译 holistic_tracking_cpu

      在cmd中 输入

      bazel build -c opt --action_env PYTHON_BIN_PATH="C://Python312//python.exe" --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/holistic_tracking:holistic_tracking_cpu

      如果遇到这种错误:

      找到显示的文件 ,删除多余的注释 ,再次编译

      编译成功后,在cmd中输入指令:
       

      bazel-bin/mediapipe/examples/desktop/holistic_tracking/holistic_tracking_cpu --calculator_graph_config_file=mediapipe/graphs/holistic_tracking/holistic_tracking_cpu.pbtxt

      即可看到对应的结果。

              以上是我结合自己编译的过程,所执行操作的记录,尽可能地避免大家去踩坑,不过可能有一些细节没有讲述清楚,所以更详细的过程可以参考这位大佬给出的教程:Mediapipe – Windows10 编译Mediapipe C++版本保姆级教程-StubbornHuang Blog

      Logo

      加入社区!打开量化的大门,首批课程上线啦!

      更多推荐