diff --git a/mediapipe/pose_tracking_dll/README.md b/mediapipe/pose_tracking_dll/README.md index fb4b731ac..0946f8c98 100644 --- a/mediapipe/pose_tracking_dll/README.md +++ b/mediapipe/pose_tracking_dll/README.md @@ -7,30 +7,82 @@ Currently, the following features are supported: - Accessing the 3D coordinates of each node of the skeleton ## Prerequisites -Follow the guidelines on the official Mediapipe website: https://google.github.io/mediapipe/getting_started/install.html#installing-on-windows -IMPORTANT: The tutorial does not specify which version of Bazel to install. Install Bazel version 3.7.2. The OpenCV version used by default in mediapipe is 3.4.10. +Install Mediapipe development environment as follows. + +**Note**: This guide assumes the Nimagna development environment. Otherwise, please follow the guidelines on the official Mediapipe website: https://google.github.io/mediapipe/getting_started/install.html#installing-on-windows with the important change that Bazel version 3.7.2 is required and the helpful sidemark that OpenCV version used by default in mediapipe is 3.4.10. + +### Install MSYS2 + +- Install MSYS2 from https://www.msys2.org/ +- Edit the %PATH% environment variable: If MSYS2 is installed to `C:\msys64`, add `C:\msys64\usr\bin` to your %PATH% environment variable. + +### Install necessary packages + +- Run `pacman -S git patch unzip` and confirm installation + +### Install Python 3.9 + +- Download Python 3.9.9 Windows executable https://www.python.org/downloads/release/python-399/ and install. Note that Python 3.10 does not work. +- Allow the installer to edit the %PATH% environment variable. +- The Python installation path is referred to as `PYTHONDIR` in the following steps. Usually, this is `C:\Users\...\AppData\Local\Programs\Python\Python39` when installing only for the current user. +- Run `pip install numpy` in a new command line. + +### Install Visual C++ Build Tools 2019 and WinSDK + +- Download and install VC build tools from https://visualstudio.microsoft.com/visual-cpp-build-tools/ with the following settings: + ![image](https://user-images.githubusercontent.com/83065859/148920359-fc5830c2-3eb1-47d4-ba33-8b1ba783b728.png) + +- Redistributables and WinSDK 10.0.19041.0 should be installed already. If not, install with Visual Studio or download the [WinSDK from the official Microsoft website](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/) and install. + +### Install Bazel 3.7.2 + +- Download `bazel-3.7.2-windows-x86_64.exe` from https://github.com/bazelbuild/bazel/releases/tag/3.7.2 and rename to `bazel.exe` +- Add the location of the downloaded Bazel executable to the %PATH% environment variable. +- Set additional Bazel environment variables as follows: + - `BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools` + - `BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC` + - `BAZEL_VC_FULL_VERSION=14.29.30133` - or the name of the folder you find in `C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC` + - `BAZEL_WINSDK_FULL_VERSION=10.0.19041.0` + +### Checkout Mediapipe + +- git clone https://github.com/NimagnaAG/mediapipe +- the repository root folder is referred to as `MEDIAPIPEDIR` in the following steps + +### Install OpenCV + +- Download OpenCV 3.4.10 from https://sourceforge.net/projects/opencvlibrary/files/3.4.10/opencv-3.4.10-vc14_vc15.exe/download +- Extract OpenCV from into a folder, e.g. `C:\Users\ChristophNiederberge\source\repos\opencv_3.4.10`. This folder is referred to as `OPENCVDIR` in the following steps. +- Edit the `MEDIAPIPEDIR\WORKSPACE` file: Around line 215, is the "windows_opencv" repository. Adapt the path to point to `OPENCVDIR\\build` (using double backslashes): + ``` + new_local_repository( + name = "windows_opencv", + build_file = "@//third_party:opencv_windows.BUILD", + path = "OPENCVDIR\\build", + ) + ``` + +#### OpenCV side note If you are using a different OpenCV version, adapt the `OPENCV_VERSION` variable in the file `mediapipe/external/opencv_.BUILD` to the one installed in the system (https://github.com/google/mediapipe/issues/1926#issuecomment-825874197). - ## How to build -Assuming you're in the root of the repository: +Assuming you're in `MEDIAPIPEDIR`, the root of the repository, run the following commands by replacing `PYTHONDIR` using forward slashes "/" in the path: ``` cd mediapipe -bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH= pose_tracking_dll:pose_tracking_cpu +bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH=PYTHONDIR/python.exe pose_tracking_dll:pose_tracking_cpu ``` -Alternatively `dbg` can be used in place of `opt` to build the library with debug symbols in Visual Studio pdb format. +The results will be stored in the `bazel-bin\mediapipe\pose_tracking_dll` folder. -The results will be stored in the bazel-bin\mediapipe\pose_tracking_dll folder. +**Build debug symbols** +- `dbg` can be used in place of `opt` to build the library with debug symbols in Visual Studio pdb format. ## How to use -Go to bazel-bin\mediapipe\pose_tracking_dll -Link pose_tracking_cpu.lib and pose_tracking_lib.dll.if.lib statically in your project. - -Make sure the opencv_world3410.dll and pose_tracking_lib.dll are accessible in your working directory. - -Use the mediapipe\pose_tracking_dll\pose_tracking.h header file to access the methods of the library. +- Go to bazel-bin\mediapipe\pose_tracking_dll +- Link `pose_tracking_cpu.lib` and `pose_tracking_lib.dll.if.lib` statically in your project. +- Make sure `opencv_world3410.dll` and `pose_tracking_lib.dll` are accessible in your working directory. +- Includeptyh `mediapipe\pose_tracking_dll\pose_tracking.h` header file to access the methods of the library.