Como instalar no Debian e no Ubuntu
Instale o Bazelisk.
Siga a documentação oficial do Bazel para instalar o Bazelisk.
Repositório do MediaPipe para finalizar a compra.
$ cd $HOME $ git clone --depth 1 https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe
Instale o OpenCV e o FFmpeg.
Opção 1. Use a ferramenta do gerenciador de pacotes para instalar as bibliotecas OpenCV pré-compiladas. O FFmpeg será instalado pelo
libopencv-video-dev
.SO 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
Observação: No Debian 11/Ubuntu 21.04, quando o OpenCV 4.5 é instalado com
libopencv-video-dev
, olibopencv-contrib-dev
também precisa ser instalado.$ sudo apt-get install -y libopencv-contrib-dev
O
opencv_linux.BUILD
e oWORKSPACE
do MediaPipe já estão configurados para o OpenCV 2/3 e devem funcionar corretamente em qualquer arquitetura:# 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", ], )
Para o OpenCV 4, é necessário modificar
opencv_linux.BUILD
levando em conta a arquitetura atual:# 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", ], )
Opção 2. Execute
setup_opencv.sh
para criar automaticamente o OpenCV da origem e modificar a configuração do OpenCV do MediaPipe. Essa opção executa automaticamente todas as etapas definidas na opção 3.Opção 3. Siga a documentação do OpenCV para criar manualmente o OpenCV a partir do código-fonte.
Talvez seja necessário modificar
WORKSPACE
eopencv_linux.BUILD
para apontar o MediaPipe para suas próprias bibliotecas do OpenCV. Suponha que o OpenCV seja instalado em/usr/local/
, o que é recomendado por padrão.Configuração do 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", ], )
Configuração do 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", ], )
A configuração atual do FFmpeg é definida em
ffmpeg_linux.BUILD
e funciona para qualquer arquitetura:# 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", ], )
Para executar exemplos de área de trabalho somente no Linux (não no OS X) com aceleração de 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.
Execute o exemplo Hello World! em 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!
Se você encontrar um erro de build, leia Solução de problemas para encontrar as soluções de vários problemas comuns de build.
Como instalar no CentOS
Isenção de responsabilidade: a execução do MediaPipe no CentOS é experimental.
Instale o Bazelisk.
Siga a documentação oficial do Bazel para instalar o Bazelisk.
Repositório do MediaPipe para finalizar a compra.
$ git clone --depth 1 https://github.com/google/mediapipe.git # Change directory into MediaPipe root directory $ cd mediapipe
Instale o OpenCV.
Opção 1. Use a ferramenta do gerenciador de pacotes para instalar a versão pré-compilada.
$ sudo yum install opencv-devel
Opção 2. Crie o OpenCV a partir do código-fonte.
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"], )
Execute o exemplo Hello World! em 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!
Se você encontrar um erro de build, leia Solução de problemas para encontrar as soluções de vários problemas comuns de build.
Como instalar no macOS
Pré-trabalho:
Instale o Bazelisk.
Siga a documentação oficial do Bazel para instalar o Bazelisk.
Confira o repositório do MediaPipe.
$ git clone --depth 1 https://github.com/google/mediapipe.git $ cd mediapipe
Instale o OpenCV e o FFmpeg.
Opção 1. Use a ferramenta do gerenciador de pacotes HomeBrew para instalar as bibliotecas pré-compiladas do OpenCV 3. O FFmpeg será instalado pelo OpenCV.
$ brew install opencv@3 # There is a known issue caused by the glog dependency. Uninstall glog. $ brew uninstall --ignore-dependencies glog
Opção 2. Use a ferramenta gerenciador de pacotes MacPorts para instalar as bibliotecas 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"], )
Verifique se o Python 3 e a biblioteca "six" do Python estão instalados.
$ 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
Execute o exemplo Hello World! em 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!
Se você encontrar um erro de build, leia Solução de problemas para encontrar as soluções de vários problemas comuns de build.
Como instalar no Windows
Exoneração de responsabilidade: a execução do MediaPipe no Windows é experimental.
Instale o MSYS2 e edite a variável de ambiente
%PATH%
.Se o MSYS2 estiver instalado em
C:\msys64
, adicioneC:\msys64\usr\bin
à variável de ambiente%PATH%
.Instale os pacotes necessários.
C:\> pacman -S git patch unzip
Instale o Python e permita que o executável edite a variável de ambiente
%PATH%
.Faça o download do executável do Python para Windows em https://www.python.org/downloads e instale.
Instalar as Ferramentas de Build do Visual C++ 2019 e o WinSDK
Acesse o site do VisualStudio, faça o download das ferramentas de build e instale o Microsoft Visual C++ 2019 Redistribuível e as ferramentas de build do Microsoft 2019.
Faça o download do WinSDK no site oficial da MicroSoft e instale.
Instale o Bazel ou o Bazelisk e adicione o local do executável do Bazel à variável de ambiente
%PATH%
.Opção 1. Siga a documentação oficial do Bazel para instalar o Bazel 6.5.0 ou mais recente.
Opção 2. Siga a documentação oficial do Bazel para instalar o Bazelisk.
Defina variáveis do Bazel. Saiba mais detalhes sobre "Build on Windows" na documentação oficial do 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>
Confira o repositório do 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
Instale o OpenCV.
Faça o download do executável do Windows em https://opencv.org/releases/ e instale-o. O MediaPipe 0.10.x oferece suporte ao OpenCV 3.4.10. Edite o arquivo
WORKSPACE
se o OpenCV não estiver instalado emC:\opencv
.new_local_repository( name = "windows_opencv", build_file = "@//third_party:opencv_windows.BUILD", path = "C:\\<path to opencv>\\build", )
Execute o exemplo Hello World! em 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!
Se você encontrar um erro de build, leia Solução de problemas para encontrar as soluções de vários problemas comuns de build.
Como instalar no Subsistema do Windows para Linux (WSL)
Siga as instruções para instalar o Subsistema Windows para Linux (Ubuntu).
Instale o ADB do Windows e inicie o servidor ADB no Windows.
Inicie o WSL.
Instale os pacotes necessários.
username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y build-essential git python zip adb openjdk-8-jdk
Instale o Bazelisk.
Siga a documentação oficial do Bazel para instalar o Bazelisk.
Repositório do MediaPipe para finalizar a compra.
username@DESKTOP-TMVLBJ1:~$ git clone --depth 1 https://github.com/google/mediapipe.git username@DESKTOP-TMVLBJ1:~$ cd mediapipe
Instale o OpenCV e o FFmpeg.
Opção 1. Use a ferramenta do gerenciador de pacotes para instalar as bibliotecas OpenCV pré-compiladas. O FFmpeg será instalado usando 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
Opção 2. Execute
setup_opencv.sh
para criar automaticamente o OpenCV a partir da origem e modificar a configuração do OpenCV do MediaPipe.Opção 3. Siga a documentação do OpenCV para criar manualmente o OpenCV a partir do código-fonte.
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"], )
Execute o exemplo Hello World! em 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!
Se você encontrar um erro de build, consulte Solução de problemas para encontrar as soluções de vários problemas comuns de build.
Instalação usando o Docker
Isso vai usar uma imagem do Docker que isola a instalação do Mediapipe do restante do sistema.
Instale o Docker no sistema host.
Crie uma imagem do Docker com a tag "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
Execute o exemplo Hello World! em 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!
Se você encontrar um erro de build, consulte Solução de problemas para encontrar as soluções de vários problemas comuns de build.
Crie um exemplo do MediaPipe para 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