التثبيت على Debian وUbuntu
ثبِّت Bazelisk.
اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.
اطّلِع على مستودع MediaPipe.
$ cd $HOME $ git clone --depth 1 https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe
ثبِّت 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", ], )
لتشغيل أمثلة أجهزة الكمبيوتر المكتبي على نظام التشغيل 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.
شغِّل مثال 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 هو إجراء تجريبي.
ثبِّت Bazelisk.
اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.
اطّلِع على مستودع MediaPipe.
$ git clone --depth 1 https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe
ثبِّت 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"], )
شغِّل مثال Hello World! في 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
العمل التمهيدي:
ثبِّت Bazelisk.
اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.
اطّلِع على مستودع MediaPipe.
$ git clone --depth 1 https://github.com/google/mediapipe.git $ cd mediapipe
ثبِّت 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"], )
تأكَّد من تثبيت Python 3 ومكتبة Python "six".
$ 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
شغِّل مثال Hello World! في 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 هو إجراء تجريبي.
ثبِّت MSYS2 وعدِّل متغيّر
%PATH%
في البيئة.إذا تم تثبيت MSYS2 على
C:\msys64
، أضِفC:\msys64\usr\bin
إلى متغير البيئة%PATH%
.ثبِّت الحِزم اللازمة.
C:\> pacman -S git patch unzip
ثبِّت Python واسمح للملف التنفيذي بتعديل متغيّر
%PATH%
البيئة.نزِّل الملف التنفيذي لبرنامج Python لنظام التشغيل Windows من https://www.python.org/downloads ثبِّته.
تثبيت Visual C++ Build Tools وWinSDK
انتقِل إلى موقع VisualStudio الإلكتروني، نزِّل أدوات الإنشاء، ثبِّت Microsoft Visual C++ 2022 Redistributable وMicrosoft Build Tools 2022.
نزِّل حزمة WinSDK من الموقع الإلكتروني الرسمي لشركة Microsoft ثبِّتها.
ثبِّت Bazel أو Bazelisk وأضِف موقع الملف التنفيذي لبرنامج Bazel إلى متغيّر البيئة
%PATH%
.الخيار رقم 1. اتّبِع المستندات الرسمية حول Bazel لتركيب الإصدار 6.5.0 من Bazel أو إصدار أحدث.
الخيار رقم 2. اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.
اضبط متغيّرات 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\<version>\BuildTools C:\> set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\<version>\BuildTools\VC C:\> set BAZEL_VC_FULL_VERSION=<Your local VC version> C:\> set BAZEL_WINSDK_FULL_VERSION=<Your local WinSDK version>
اطّلِع على مستودع 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
ثبِّت 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", )
شغِّل مثال Hello World! في 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)
اتّبِع التعليمات لتثبيت "النظام الفرعي لنظام التشغيل Linux (Ubuntu) في نظام التشغيل Windows".
ثبِّت برنامج Windows ADB وابدأ خادم ADB في نظام التشغيل Windows.
شغِّل WSL.
.ثبِّت الحِزم المطلوبة.
username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk
ثبِّت Bazelisk.
اتّبِع مستندات Bazel الرسمية لتثبيت Bazelisk.
اطّلِع على مستودع MediaPipe.
username@DESKTOP-TMVLBJ1:~$ git clone --depth 1 https://github.com/google/mediapipe.git username@DESKTOP-TMVLBJ1:~$ cd mediapipe
ثبِّت 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"], )
شغِّل مثال 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 التي ستعزل تثبيت MediaPipe عن بقية النظام.
ثبِّت Docker على نظام المضيف.
أنشئ صورة 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
شغِّل مثال Hello World! في 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!
إذا واجهت خطأ في الإصدار، يُرجى قراءة مقالة تحديد المشاكل وحلّها للعثور على حلول للعديد من المشاكل الشائعة في الإصدار.
أنشئ مثالاً على تطبيق 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