تثبيت

التثبيت على نظامي التشغيل Debian وUbuntu

  1. ثبِّت Bazelisk.

    اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  2. اطّلِع على مستودع MediaPipe.

    $ cd $HOME
    $ git clone --depth 1 https://github.com/google/mediapipe.git
    
    # Change directory into MediaPipe root directory
    $ cd mediapipe
    
  3. تثبيت OpenCV وFFmpeg.

    الخيار 1: استخدِم أداة إدارة الحِزم لتثبيت مكتبات OpenCV المُجمَّعة مسبقًا. سيتم تثبيت FFmpeg من خلال libopencv-video-dev.

    نظام التشغيل OpenCV
    Debian 9 (stretch) 2.4
    Debian 10 (buster) 3.2
    Debian 11 (bullseye) 4.5
    Ubuntu 16.04 LTS 2.4
    نظام التشغيل Ubuntu 18.04 LTS 3.2
    Ubuntu 20.04 LTS 4.2
    Ubuntu 20.04 LTS 4.2
    Ubuntu 21.04 4.5
    $ sudo apt-get install -y \
        libopencv-core-dev \
        libopencv-highgui-dev \
        libopencv-calib3d-dev \
        libopencv-features2d-dev \
        libopencv-imgproc-dev \
        libopencv-video-dev
    

    ملاحظة: على نظام التشغيل Debian 11/Ubuntu 21.04، عند تثبيت OpenCV 4.5 باستخدام libopencv-video-dev، يجب أيضًا تثبيت libopencv-contrib-dev.

    $ sudo apt-get install -y libopencv-contrib-dev
    

    تم ضبط opencv_linux.BUILD وWORKSPACE من MediaPipe لنظام OpenCV 2/3، ومن المفترض أن يعملا بشكل صحيح على أي بنية أساسية:

    # WORKSPACE
    new_local_repository(
      name = "linux_opencv",
      build_file = "@//third_party:opencv_linux.BUILD",
      path = "/usr",
    )
    
    # opencv_linux.BUILD for OpenCV 2/3 installed from Debian package
    cc_library(
      name = "opencv",
      linkopts = [
        "-l:libopencv_core.so",
        "-l:libopencv_calib3d.so",
        "-l:libopencv_features2d.so",
        "-l:libopencv_highgui.so",
        "-l:libopencv_imgcodecs.so",
        "-l:libopencv_imgproc.so",
        "-l:libopencv_video.so",
        "-l:libopencv_videoio.so",
      ],
    )
    

    بالنسبة إلى OpenCV 4، عليك تعديل opencv_linux.BUILD مع مراعاة البنية الحالية:

    # WORKSPACE
    new_local_repository(
      name = "linux_opencv",
      build_file = "@//third_party:opencv_linux.BUILD",
      path = "/usr",
    )
    
    # opencv_linux.BUILD for OpenCV 4 installed from Debian package
    cc_library(
      name = "opencv",
      hdrs = glob([
        # Uncomment according to your multiarch value (gcc -print-multiarch):
        #  "include/aarch64-linux-gnu/opencv4/opencv2/cvconfig.h",
        #  "include/arm-linux-gnueabihf/opencv4/opencv2/cvconfig.h",
        #  "include/x86_64-linux-gnu/opencv4/opencv2/cvconfig.h",
        "include/opencv4/opencv2/**/*.h*",
      ]),
      includes = [
        # Uncomment according to your multiarch value (gcc -print-multiarch):
        #  "include/aarch64-linux-gnu/opencv4/",
        #  "include/arm-linux-gnueabihf/opencv4/",
        #  "include/x86_64-linux-gnu/opencv4/",
        "include/opencv4/",
      ],
      linkopts = [
        "-l:libopencv_core.so",
        "-l:libopencv_calib3d.so",
        "-l:libopencv_features2d.so",
        "-l:libopencv_highgui.so",
        "-l:libopencv_imgcodecs.so",
        "-l:libopencv_imgproc.so",
        "-l:libopencv_video.so",
        "-l:libopencv_videoio.so",
      ],
    )
    

    الخيار 2: يمكنك تشغيل setup_opencv.sh لإنشاء مكتبة OpenCV تلقائيًا من ملف المصدر وتعديل إعدادات OpenCV في MediaPipe. سينفِّذ هذا الخيار تلقائيًا جميع الخطوات المحدَّدة في الخيار 3.

    الخيار 3: اتّبِع مستندات OpenCV لإنشاء OpenCV يدويًا من رمز المصدر.

    قد تحتاج إلى تعديل WORKSPACE وopencv_linux.BUILD لتوجيه MediaPipe إلى مكتبات OpenCV الخاصة بك. لنفترض أنّه سيتم تثبيت OpenCV على ‎ /usr/local/، وهو الخيار المُقترَح تلقائيًا.

    إعداد OpenCV 2/3:

    # WORKSPACE
    new_local_repository(
      name = "linux_opencv",
      build_file = "@//third_party:opencv_linux.BUILD",
      path = "/usr/local",
    )
    
    # opencv_linux.BUILD for OpenCV 2/3 installed to /usr/local
    cc_library(
      name = "opencv",
      linkopts = [
        "-L/usr/local/lib",
        "-l:libopencv_core.so",
        "-l:libopencv_calib3d.so",
        "-l:libopencv_features2d.so",
        "-l:libopencv_highgui.so",
        "-l:libopencv_imgcodecs.so",
        "-l:libopencv_imgproc.so",
        "-l:libopencv_video.so",
        "-l:libopencv_videoio.so",
      ],
    )
    

    إعداد OpenCV 4:

    # WORKSPACE
    new_local_repository(
      name = "linux_opencv",
      build_file = "@//third_party:opencv_linux.BUILD",
      path = "/usr/local",
    )
    
    # opencv_linux.BUILD for OpenCV 4 installed to /usr/local
    cc_library(
      name = "opencv",
      hdrs = glob([
        "include/opencv4/opencv2/**/*.h*",
      ]),
      includes = [
        "include/opencv4/",
      ],
      linkopts = [
        "-L/usr/local/lib",
        "-l:libopencv_core.so",
        "-l:libopencv_calib3d.so",
        "-l:libopencv_features2d.so",
        "-l:libopencv_highgui.so",
        "-l:libopencv_imgcodecs.so",
        "-l:libopencv_imgproc.so",
        "-l:libopencv_video.so",
        "-l:libopencv_videoio.so",
      ],
    )
    

    تم تحديد إعداد FFmpeg الحالي في ffmpeg_linux.BUILD ومن المفترض أن يعمل مع أي بنية:

    # WORKSPACE
    new_local_repository(
      name = "linux_ffmpeg",
      build_file = "@//third_party:ffmpeg_linux.BUILD",
      path = "/usr"
    )
    
    # ffmpeg_linux.BUILD for FFmpeg installed from Debian package
    cc_library(
      name = "libffmpeg",
      linkopts = [
        "-l:libavcodec.so",
        "-l:libavformat.so",
        "-l:libavutil.so",
      ],
    )
    
  4. لتشغيل أمثلة أجهزة الكمبيوتر المكتبي على نظام التشغيل Linux فقط (وليس على نظام التشغيل OS X) مع تسريع وحدة معالجة الرسومات

    # Requires a GPU with EGL driver support.
    # Can use mesa GPU libraries for desktop, (or Nvidia/AMD equivalent).
    sudo apt-get install mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev
    
    # To compile with GPU support, replace
    --define MEDIAPIPE_DISABLE_GPU=1
    # with
    --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11
    # when building GPU examples.
    
  5. تشغيل Hello World! في مثال C++.

    $ export GLOG_logtostderr=1
    
    # if you are running on Linux desktop with CPU only
    $ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
        mediapipe/examples/desktop/hello_world:hello_world
    
    # If you are running on Linux desktop with GPU support enabled (via mesa drivers)
    $ bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 \
        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!
    

إذا واجهت خطأ في عملية الإنشاء، يُرجى الاطّلاع على مقالة تحديد المشاكل وحلّها للعثور على حلول للعديد من المشاكل الشائعة في عملية الإنشاء.

التثبيت على CentOS

إخلاء مسؤولية: لا يزال تشغيل MediaPipe على CentOS في مرحلة تجريبية.

  1. ثبِّت Bazelisk.

    اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  2. اطّلِع على مستودع MediaPipe.

    $ git clone --depth 1 https://github.com/google/mediapipe.git
    
    # Change directory into MediaPipe root directory
    $ cd mediapipe
    
  3. ثبِّت OpenCV.

    الخيار رقم 1. استخدِم أداة إدارة الحِزم لتثبيت الإصدار المجمَّع مسبقًا.

    $ sudo yum install opencv-devel
    

    الخيار رقم 2. قم بإنشاء OpenCV من رمز المصدر.

    new_local_repository(
        name = "linux_opencv",
        build_file = "@//third_party:opencv_linux.BUILD",
        path = "/usr/local",
    )
    
    new_local_repository(
        name = "linux_ffmpeg",
        build_file = "@//third_party:ffmpeg_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([
            # For OpenCV 3.x
            "include/opencv2/**/*.h*",
            # For OpenCV 4.x
            # "include/opencv4/opencv2/**/*.h*",
        ]),
        includes = [
            # For OpenCV 3.x
            "include/",
            # For OpenCV 4.x
            # "include/opencv4/",
        ],
        linkstatic = 1,
        visibility = ["//visibility:public"],
    )
    
    cc_library(
        name = "libffmpeg",
        srcs = glob(
            [
                "lib/libav*.so",
            ],
        ),
        hdrs = glob(["include/libav*/*.h"]),
        includes = ["include"],
        linkopts = [
            "-lavcodec",
            "-lavformat",
            "-lavutil",
        ],
        linkstatic = 1,
        visibility = ["//visibility:public"],
    )
    
  4. شغِّل مثال "مرحبًا بك في C++".

    $ export GLOG_logtostderr=1
    # Need bazel flag 'MEDIAPIPE_DISABLE_GPU=1' if you are running on Linux desktop with CPU only
    $ 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!
    

إذا واجهت خطأً في الإصدار، يُرجى الاطّلاع على القسم تحديد المشاكل وحلّها للعثور على حلول للعديد من المشاكل الشائعة المتعلقة بالإنشاء.

جارٍ التثبيت على نظام التشغيل macOS

  1. العمل التمهيدي:

    • ثبِّت Homebrew.
    • ثبِّت Xcode وأدوات سطر الأوامر التي توفّرها شركة xcode-select --install.
  2. ثبِّت Bazelisk.

    اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  3. اطّلِع على مستودع MediaPipe.

    $ git clone --depth 1 https://github.com/google/mediapipe.git
    
    $ cd mediapipe
    
  4. ثبِّت OpenCV وFFmpeg.

    الخيار رقم 1. استخدم أداة إدارة حزم HomeBrew لتثبيت مكتبات OpenCV 3 المجمعة مسبقًا. سيتم تثبيت FFmpeg من خلال OpenCV.

    $ brew install opencv@3
    
    # There is a known issue caused by the glog dependency. Uninstall glog.
    $ brew uninstall --ignore-dependencies glog
    

    الخيار رقم 2. استخدِم أداة إدارة الحِزم MacPorts لتثبيت مكتبات OpenCV.

    $ port install opencv
    
    new_local_repository(
        name = "macos_opencv",
        build_file = "@//third_party:opencv_macos.BUILD",
        path = "/opt",
    )
    
    new_local_repository(
        name = "macos_ffmpeg",
        build_file = "@//third_party:ffmpeg_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"],
    )
    
    cc_library(
        name = "libffmpeg",
        srcs = glob(
            [
                "local/lib/libav*.dylib",
            ],
        ),
        hdrs = glob(["local/include/libav*/*.h"]),
        includes = ["local/include/"],
        linkopts = [
            "-lavcodec",
            "-lavformat",
            "-lavutil",
        ],
        linkstatic = 1,
        visibility = ["//visibility:public"],
    )
    
  5. تأكد من تثبيت مكتبة Python 3 ومكتبة Python "الستة".

    $ brew install python
    $ sudo ln -s -f /usr/local/bin/python3.7 /usr/local/bin/python
    $ python --version
    Python 3.7.4
    $ pip3 install --user six
    
  6. شغِّل مثال "مرحبًا بك في C++".

    $ 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!
    

إذا واجهت خطأ في عملية الإنشاء، يُرجى الاطّلاع على مقالة تحديد المشاكل وحلّها للعثور على حلول للعديد من المشاكل الشائعة في عملية الإنشاء.

التثبيت على نظام التشغيل Windows

إخلاء المسؤولية: إنّ تشغيل MediaPipe على نظام التشغيل Windows هو إجراء تجريبي.

  1. ثبِّت MSYS2 وعدِّل متغيّر بيئة %PATH%.

    في حال تثبيت MSYS2 على C:\msys64، أضِف C:\msys64\usr\bin إلى متغيّر بيئة %PATH%.

  2. ثبِّت الحِزم اللازمة.

    C:\> pacman -S git patch unzip
    
  3. ثبِّت Python واسمَح للملف التنفيذي بتعديل متغيّر بيئة %PATH%.

    نزِّل الملف التنفيذي لبرنامج Python لنظام التشغيل Windows من https://www.python.org/downloads ثبِّته.

  4. تثبيت Visual C++ Build Tools 2019 وWinSDK

    انتقِل إلى موقع Visual Studio الإلكتروني، ثم نزِّل أدوات الإنشاء وثبِّت حِزم Microsoft Visual C++ 2019 القابلة لإعادة التوزيع وحِزم Microsoft Build Tools 2019.

    نزِّل WinSDK من موقع MicroSoft الإلكتروني الرسمي وثبِّته.

  5. ثبِّت Bazel أو Bazelisk وأضِف موقع الملف التنفيذي لبرنامج Bazel إلى متغيّر البيئة %PATH%.

    الخيار رقم 1. اتّبِع المستندات الرسمية حول Bazel لتركيب الإصدار 6.5.0 من Bazel أو إصدار أحدث.

    الخيار رقم 2. اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  6. اضبط متغيّرات Bazel. يمكنك الاطّلاع على مزيد من التفاصيل حول "الإنشاء على نظام التشغيل Windows" في مستندات Bazel الرسمية.

    # Please find the exact paths and version numbers from your local version.
    C:\> set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
    C:\> set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC
    C:\> set BAZEL_VC_FULL_VERSION=<Your local VC version>
    C:\> set BAZEL_WINSDK_FULL_VERSION=<Your local WinSDK version>
    
  7. اطّلِع على مستودع MediaPipe.

    C:\Users\Username\mediapipe_repo> git clone --depth 1 https://github.com/google/mediapipe.git
    
    # Change directory into MediaPipe root directory
    C:\Users\Username\mediapipe_repo> cd mediapipe
    
  8. ثبِّت OpenCV.

    نزِّل ملف Windows القابل للتنفيذ من https://opencv.org/releases/ وثبِّته. يتوافق الإصدار 0.10.x من MediaPipe مع الإصدار 3.4.10 من OpenCV. تذكَّر تعديلملف WORKSPACE إذا لم يكن OpenCV مثبّتًا في C:\opencv.

    new_local_repository(
        name = "windows_opencv",
        build_file = "@//third_party:opencv_windows.BUILD",
        path = "C:\\<path to opencv>\\build",
    )
    
  9. شغِّل مثال "مرحبًا بك في C++".

    C:\Users\Username\mediapipe_repo>bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C://python_36//python.exe" mediapipe/examples/desktop/hello_world
    
    C:\Users\Username\mediapipe_repo>set GLOG_logtostderr=1
    
    C:\Users\Username\mediapipe_repo>bazel-bin\mediapipe\examples\desktop\hello_world\hello_world.exe
    
    # should print:
    # I20200514 20:43:12.277598  1200 hello_world.cc:56] Hello World!
    # I20200514 20:43:12.278597  1200 hello_world.cc:56] Hello World!
    # I20200514 20:43:12.279618  1200 hello_world.cc:56] Hello World!
    # I20200514 20:43:12.279618  1200 hello_world.cc:56] Hello World!
    # I20200514 20:43:12.279618  1200 hello_world.cc:56] Hello World!
    # I20200514 20:43:12.279618  1200 hello_world.cc:56] Hello World!
    # I20200514 20:43:12.279618  1200 hello_world.cc:56] Hello World!
    # I20200514 20:43:12.279618  1200 hello_world.cc:56] Hello World!
    # I20200514 20:43:12.279618  1200 hello_world.cc:56] Hello World!
    # I20200514 20:43:12.280613  1200 hello_world.cc:56] Hello World!
    

إذا واجهت خطأ في عملية الإنشاء، يُرجى الاطّلاع على مقالة تحديد المشاكل وحلّها للعثور على حلول للعديد من المشاكل الشائعة في عملية الإنشاء.

التثبيت على نظام التشغيل Windows Subsystem for Linux (WSL)

  1. اتّبِع التعليمات لتثبيت "النظام الفرعي لنظام التشغيل Linux (Ubuntu) في نظام التشغيل Windows".

  2. ثبِّت برنامج Windows ADB وابدأ خادم ADB في نظام التشغيل Windows.

  3. إطلاق WSL.

    .
  4. ثبِّت الحزم المطلوبة.

    username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk
    
  5. ثبِّت Bazelisk.

    اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.

  6. اطّلِع على مستودع MediaPipe.

    username@DESKTOP-TMVLBJ1:~$ git clone --depth 1 https://github.com/google/mediapipe.git
    
    username@DESKTOP-TMVLBJ1:~$ cd mediapipe
    
  7. ثبِّت OpenCV وFFmpeg.

    الخيار رقم 1. استخدم أداة مدير الحزم لتثبيت مكتبات OpenCV المجمّعة مسبقًا. سيتم تثبيت FFmpeg عبر libopencv-video-dev.

    username@DESKTOP-TMVLBJ1:~/mediapipe$ sudo apt-get install libopencv-core-dev libopencv-highgui-dev \
                           libopencv-calib3d-dev libopencv-features2d-dev \
                           libopencv-imgproc-dev libopencv-video-dev
    

    الخيار رقم 2. يمكنك تشغيل setup_opencv.sh لإنشاء مكتبة OpenCV تلقائيًا من المصدر وتعديل إعدادات OpenCV في MediaPipe.

    الخيار 3: يمكنك اتّباع مستندات OpenCV لإنشاء OpenCV يدويًا من خلال رمز المصدر.

    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"],
    )
    
  8. تشغيل Hello World! في مثال C++.

    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!
    

إذا حدث خطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.

التثبيت باستخدام Docker

سيؤدي هذا إلى استخدام صورة Docker ستعمل على عزل تثبيت mediapi عن باقي النظام.

  1. ثبِّت Docker على نظام المضيف.

  2. أنشئ صورة docker باستخدام العلامة "mediapipe".

    $ git clone --depth 1 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 . /edge/mediapipe/
    # ---> a95c212089c5
    # Successfully built a95c212089c5
    # Successfully tagged mediapipe:latest
    
  3. شغِّل مثال "مرحبًا بك في C++".

    $ 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
    
    # Should print:
    # Hello World!
    # Hello World!
    # Hello World!
    # Hello World!
    # Hello World!
    # Hello World!
    # Hello World!
    # Hello World!
    # Hello World!
    # Hello World!
    

إذا حدث خطأ في الإصدار، يُرجى الاطّلاع على تحديد المشاكل وحلّها للعثور على حلول للعديد من مشاكل الإصدار الشائعة.

  1. أنشئ مثالاً على تطبيق MediaPipe لنظام التشغيل Android.

    $ docker run -it --name mediapipe mediapipe:latest
    
    root@bca08b91ff63:/mediapipe# bash ./setup_android_sdk_and_ndk.sh
    
    # Should print:
    # Android NDK is now installed. Consider setting $ANDROID_NDK_HOME environment variable to be /root/Android/Sdk/ndk-bundle/android-ndk-r19c
    # Set android_ndk_repository and android_sdk_repository in WORKSPACE
    # Done
    
    root@bca08b91ff63:/mediapipe# bazel build -c opt --config=android_arm64 mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu:objectdetectiongpu
    
    # Should print:
    # Target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu:objectdetectiongpu up-to-date:
    # bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu/objectdetectiongpu_deploy.jar
    # bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu/objectdetectiongpu_unsigned.apk
    # bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/objectdetectiongpu/objectdetectiongpu.apk
    # INFO: Elapsed time: 144.462s, Critical Path: 79.47s
    # INFO: 1958 processes: 1 local, 1863 processwrapper-sandbox, 94 worker.
    # INFO: Build completed successfully, 2028 total actions