17 KiB
Installing MediaPipe
Note: To interoperate with OpenCV, OpenCV 3.x and above are preferred. OpenCV 2.x currently works but interoperability support may be deprecated in the future.
Note: If you plan to use TensorFlow calculators and example apps, there is a known issue with gcc and g++ version 6.3 and 7.3. Please use other versions.
Choose your operating system:
- Installing on Debian and Ubuntu
- Installing on CentOS
- Installing on macOS
- Installing on Windows Subsystem for Linux (WSL)
- Installing using Docker
To build and run Android apps:
To build and run iOS apps:
- Please see the separate iOS setup documentation.
Installing on Debian and Ubuntu
-
Checkout MediaPipe repository.
$ git clone https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe -
Install Bazel (0.23 and above required).
Option 1. Use package manager tool to install the latest version of Bazel.
$ sudo apt-get install bazel # Run 'bazel version' to check version of bazel installedOption 2. Follow Bazel's documentation to install any version of Bazel manually.
-
Install OpenCV.
Option 1. Use package manager tool to install the pre-compiled OpenCV libraries.
Note: Debian 9 and Ubuntu 16.04 provide OpenCV 2.4.9. You may want to take option 2 or 3 to install OpenCV 3 or above.
$ sudo apt-get install libopencv-core-dev libopencv-highgui-dev \ libopencv-imgproc-dev libopencv-video-devOption 2. Run
setup_opencv.shto automatically build OpenCV from source and modify MediaPipe's OpenCV config.Option 3. Follow OpenCV's documentation to manually build OpenCV from source code.
Note: You may need to modify
WORKSAPCEandopencv_linux.BUILDto point MediaPipe to your own OpenCV libraries, e.g., if OpenCV 4 is installed in "/usr/local/", you need to update the "linux_opencv" new_local_repository rule inWORKSAPCEand "opencv" cc_library rule inopencv_linux.BUILDlike the following:new_local_repository( name = "linux_opencv", build_file = "@//third_party:opencv_linux.BUILD", path = "/usr/local", ) cc_library( name = "opencv", srcs = glob( [ "lib/libopencv_core.so*", "lib/libopencv_highgui.so*", "lib/libopencv_imgcodecs.so*", "lib/libopencv_imgproc.so*", "lib/libopencv_video.so*", "lib/libopencv_videoio.so*", ], ), hdrs = glob(["include/opencv4/**/*.h*"]), includes = ["include/opencv4/"], linkstatic = 1, visibility = ["//visibility:public"], ) -
Run the Hello World desktop example.
$ export GLOG_logtostderr=1 # Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is currently not supported $ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Installing on CentOS
-
Checkout MediaPipe repository.
$ git clone https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe -
Install Bazel (0.23 and above required).
Follow Bazel's documentation to install Bazel manually.
-
Install OpenCV.
Option 1. Use package manager tool to install the pre-compiled version.
Note: yum installs OpenCV 2.4.5, which may have an opencv/gstreamer issue.
$ sudo yum install opencv-develOption 2. Build OpenCV from source code.
Note: You may need to modify
WORKSAPCEandopencv_linux.BUILDto point MediaPipe to your own OpenCV libraries, e.g., if OpenCV 4 is installed in "/usr/local/", you need to update the "linux_opencv" new_local_repository rule inWORKSAPCEand "opencv" cc_library rule inopencv_linux.BUILDlike the following:new_local_repository( name = "linux_opencv", build_file = "@//third_party:opencv_linux.BUILD", path = "/usr/local", ) cc_library( name = "opencv", srcs = glob( [ "lib/libopencv_core.so*", "lib/libopencv_highgui.so*", "lib/libopencv_imgcodecs.so*", "lib/libopencv_imgproc.so*", "lib/libopencv_video.so*", "lib/libopencv_videoio.so*", ], ), hdrs = glob(["include/opencv4/**/*.h*"]), includes = ["include/opencv4/"], linkstatic = 1, visibility = ["//visibility:public"], ) -
Run the Hello World desktop example.
$ export GLOG_logtostderr=1 # Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is currently not supported $ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Installing on macOS
-
Prework:
-
Checkout MediaPipe repository.
$ git clone https://github.com/google/mediapipe.git $ cd mediapipe -
Install Bazel (0.23 and above required).
Option 1. Use package manager tool to install the latest version of Bazel.
$ brew install bazel # Run 'bazel version' to check version of bazel installedOption 2. Follow Bazel's documentation to install any version of Bazel manually.
-
Install OpenCV.
Option 1. Use HomeBrew package manager tool to install the pre-compiled OpenCV libraries.
$ brew install opencvOption 2. Use MacPorts package manager tool to install the OpenCV libraries.
$ port install opencvNote: when using MacPorts, please edit the
WORKSAPCEandopencv_linux.BUILDfiles like the following:new_local_repository( name = "macos_opencv", build_file = "@//third_party:opencv_macos.BUILD", path = "/opt", ) cc_library( name = "opencv", srcs = glob( [ "local/lib/libopencv_core.dylib", "local/lib/libopencv_highgui.dylib", "local/lib/libopencv_imgcodecs.dylib", "local/lib/libopencv_imgproc.dylib", "local/lib/libopencv_video.dylib", "local/lib/libopencv_videoio.dylib", ], ), hdrs = glob(["local/include/opencv2/**/*.h*"]), includes = ["local/include/"], linkstatic = 1, visibility = ["//visibility:public"], ) -
Run the Hello World desktop example.
$ export GLOG_logtostderr=1 # Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is currently not supported $ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Installing on Windows Subsystem for Linux (WSL)
-
Follow the instruction to install Windows Sysystem for Linux (Ubuntu).
-
Install Windows ADB and start the ADB server in Windows.
Note: Window’s and WSL’s adb versions must be the same version, e.g., if WSL has ADB 1.0.39, you need to download the corresponding Windows ADB from here.
-
Launch WSL.
Note: All the following steps will be executed in WSL. The Windows directory of the Linux Subsystem can be found in C:\Users\YourUsername\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_SomeID\LocalState\rootfs\home
-
Install the needed packages.
username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y --no-install-recommends build-essential git python zip adb openjdk-8-jdk -
Install Bazel (0.23 and above required).
username@DESKTOP-TMVLBJ1:~$ curl -sLO --retry 5 --retry-max-time 10 \ https://storage.googleapis.com/bazel/0.27.0/release/bazel-0.27.0-installer-linux-x86_64.sh && \ sudo mkdir -p /usr/local/bazel/0.27.0 && \ chmod 755 bazel-0.27.0-installer-linux-x86_64.sh && \ sudo ./bazel-0.27.0-installer-linux-x86_64.sh --prefix=/usr/local/bazel/0.27.0 && \ source /usr/local/bazel/0.27.0/lib/bazel/bin/bazel-complete.bash username@DESKTOP-TMVLBJ1:~$ /usr/local/bazel/0.27.0/lib/bazel/bin/bazel version && \ alias bazel='/usr/local/bazel/0.27.0/lib/bazel/bin/bazel' -
Checkout MediaPipe repository.
username@DESKTOP-TMVLBJ1:~$ git clone https://github.com/google/mediapipe.git username@DESKTOP-TMVLBJ1:~$ cd mediapipe -
Install OpenCV.
Option 1. Use package manager tool to install the pre-compiled OpenCV libraries.
username@DESKTOP-TMVLBJ1:~/mediapipe$ sudo apt-get install libopencv-core-dev libopencv-highgui-dev \ libopencv-imgproc-dev libopencv-video-devOption 2. Run
setup_opencv.shto automatically build OpenCV from source and modify MediaPipe's OpenCV config.Option 3. Follow OpenCV's documentation to manually build OpenCV from source code.
Note: You may need to modify
WORKSAPCEandopencv_linux.BUILDto point MediaPipe to your own OpenCV libraries, e.g., if OpenCV 4 is installed in "/usr/local/", you need to update the "linux_opencv" new_local_repository rule inWORKSAPCEand "opencv" cc_library rule inopencv_linux.BUILDlike the following:new_local_repository( name = "linux_opencv", build_file = "@//third_party:opencv_linux.BUILD", path = "/usr/local", ) cc_library( name = "opencv", srcs = glob( [ "lib/libopencv_core.so*", "lib/libopencv_highgui.so*", "lib/libopencv_imgcodecs.so*", "lib/libopencv_imgproc.so*", "lib/libopencv_video.so*", "lib/libopencv_videoio.so*", ], ), hdrs = glob(["include/opencv4/**/*.h*"]), includes = ["include/opencv4/"], linkstatic = 1, visibility = ["//visibility:public"], ) -
Run the Hello World desktop example.
username@DESKTOP-TMVLBJ1:~/mediapipe$ export GLOG_logtostderr=1 # Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is currently not supported username@DESKTOP-TMVLBJ1:~/mediapipe$ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Installing using Docker
This will use a Docker image that will isolate mediapipe's installation from the rest of the system.
-
Install Docker on your host sytem.
-
Build a docker image with tag "mediapipe".
$ git clone https://github.com/google/mediapipe.git $ cd mediapipe $ docker build --tag=mediapipe . # Should print: # Sending build context to Docker daemon 147.8MB # Step 1/9 : FROM ubuntu:latest # latest: Pulling from library/ubuntu # 6abc03819f3e: Pull complete # 05731e63f211: Pull complete # ........ # See http://bazel.build/docs/getting-started.html to start a new project! # Removing intermediate container 82901b5e79fa # ---> f5d5f402071b # Step 9/9 : COPY . /mediapipe/ # ---> a95c212089c5 # Successfully built a95c212089c5 # Successfully tagged mediapipe:latest -
Run the Hello World desktop example.
$ docker run -it --name mediapipe mediapipe:latest root@bca08b91ff63:/mediapipe# GLOG_logtostderr=1 bazel run --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world:hello_world # Should print: # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World! # Hello World!
Setting up Android SDK and NDK
Requirements:
- Android SDK release 28.0.3 and above.
- Android NDK r17c and above.
MediaPipe recommends setting up Android SDK and NDK via Android Studio, and see
next section for Android Studio
setup. However, if you prefer using MediaPipe without Android Studio, please run
setup_android_sdk_and_ndk.sh to download and setup Android SDK and NDK
before building any Android example apps.
If Android SDK and NDK are already installed (e.g., by Android Studio), set $ANDROID_HOME and $ANDROID_NDK_HOME to point to the installed SDK and NDK.
export ANDROID_HOME=<path to the Android SDK>
export ANDROID_NDK_HOME=<path to the Android NDK>
Please verify all the necessary packages are installed.
- Android SDK Platform API Level 28 or 29
- Android SDK Build-Tools 28 or 29
- Android SDK Platform-Tools 28 or 29
- Android SDK Tools 26.1.1
- Android NDK 17c or above
Setting up Android Studio with MediaPipe
The steps below use Android Studio to build and install a MediaPipe example app.
-
Install and launch Android Studio.
-
Select
Configure|SDK Manager|SDK Platforms.- Verify that Android SDK Platform API Level 28 or 29 is installed.
- Take note of the Android SDK Location, e.g.,
/usr/local/home/Android/Sdk.
-
Select
Configure|SDK Manager|SDK Tools.- Verify that Android SDK Build-Tools 28 or 29 is installed.
- Verify that Android SDK Platform-Tools 28 or 29 is installed.
- Verify that Android SDK Tools 26.1.1 is installed.
- Verify that Android NDK 17c or above is installed.
- Take note of the Android NDK Location, e.g.,
/usr/local/home/Android/Sdk/ndk-bundle.
-
Set environment variables
$ANDROID_HOMEand$ANDROID_NDK_HOMEto point to the installed SDK and NDK.export ANDROID_HOME=/usr/local/home/Android/Sdk export ANDROID_NDK_HOME=/usr/local/home/Android/Sdk/ndk-bundle -
Select
Configure|PluginsinstallBazel. -
Select
Import Bazel Project.- Select
Workspace:/path/to/mediapipe. - Select
Generate from BUILD file:/path/to/mediapipe/BUILD. - Select
Finish.
- Select
-
Connect an Android device to the workstation.
-
Select
Run...|Edit Configurations....- Enter Target Expression:
//mediapipe/examples/android/src/java/com/google/mediapipe/apps/facedetectioncpu - Enter Bazel command:
mobile-install - Enter Bazel flags:
-c opt --config=android_arm64selectRun
- Enter Target Expression: