التثبيت على نظامي التشغيل 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 (توسيع) 2.4 Debian 10 (buster) 3.2 Debian 11 (مركز الهدف) 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) باستخدام وحدة معالجة الرسومات (GPU) والتسريع.
# 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.
تشغيل مرحبًا بالعالم! في مثال 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"], )
تشغيل مرحبًا بالعالم! في مثال 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"], )
تأكد من أن بايثون 3 وبايثون "ستة" المكتبة المثبَّتة.
$ 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
تشغيل مرحبًا بالعالم! في مثال 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 وتثبيتها.
تثبيت أدوات الإصدار 2019 من Visual C++ وWinSDK
الانتقال إلى موقع Visual Studio الإلكتروني نزِّل أدوات التصميم وثبِّت Microsoft Visual C++ 2019 Redistributable. وMicrosoft Build Tools 2019.
قم بتنزيل WinSDK من موقع MicroSoft الإلكتروني الرسمي وتثبيتها.
تثبيت Bazel أو Bazelisk وإضافة موقع ملف Bazel التنفيذي إلى متغير بيئة
%PATH%
.الخيار رقم 1. متابعة مستندات Bazel الرسمية لتثبيت الإصدار 6.1.1 من 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\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>
يُرجى الاطّلاع على مستودع 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/ وتثبيتها. يتوافق الإصدار MediaPipe 0.10.x مع الإصدار 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", )
تشغيل مرحبًا بالعالم! في مثال 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 لنظام التشغيل Linux (WSL)
اتّبِع تعليمات تثبيت نظام Windows الفرعي لنظام التشغيل Linux (Ubuntu).
تثبيت 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"], )
تشغيل مرحبًا بالعالم! في مثال 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 عن باقي النظام.
تثبيت Docker على النظام المضيف الخاص بك.
أنشئ صورة Docker باستخدام العلامة "mediapi".
$ 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
تشغيل مرحبًا بالعالم! في مثال 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