@@ -6,6 +6,7 @@ Choose your operating system:
6
6
- [ Installing on Debian and Ubuntu] ( #installing-on-debian-and-ubuntu )
7
7
- [ Installing on CentOS] ( #installing-on-centos )
8
8
- [ Installing on macOS] ( #installing-on-macos )
9
+ - [ Installing on Windows Subsystem for Linux (WSL)] ( #installing-on-windows-subsystem-for-linux-wsl )
9
10
- [ Installing using Docker] ( #installing-using-docker )
10
11
- [ Setting up Android SDK and NDK] ( #setting-up-android-sdk-and-ndk )
11
12
@@ -299,6 +300,125 @@ Required libraries
299
300
# Hello World!
300
301
```
301
302
303
+ ### Installing on Windows Subsystem for Linux (WSL)
304
+
305
+ 1. Follow
306
+ [the instruction](https://docs.microsoft.com/en-us/windows/wsl/install-win10)
307
+ to install Windows Sysystem for Linux (Ubuntu)
308
+
309
+ 2. Install Windows ADB and start the ADB server in Windows
310
+
311
+ Note: Window’s and WSL’s adb versions must be the same version, e.g., if WSL
312
+ has ADB 1.0.39, you need to download the corresponding Windows ADB from
313
+ [here](https://dl.google.com/android/repository/platform-tools_r26.0.1-windows.zip).
314
+
315
+ 3. Launch WSL
316
+
317
+ Note: All the following steps will be executed in WSL. The Windows directory
318
+ of the Linux Subsystem can be found in
319
+ C:\Users\YourUsername\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_SomeID\LocalState\rootfs\home
320
+
321
+ 4. Install the needed packages
322
+
323
+ ```bash
324
+ username@DESKTOP-TMVLBJ1:~$ sudo apt-get update && sudo apt-get install -y --no-install-recommends build-essential git python zip adb openjdk-8-jdk
325
+ ```
326
+
327
+ 5. Install Bazel
328
+
329
+ ```bash
330
+ username@DESKTOP-TMVLBJ1:~$ curl -sLO --retry 5 --retry-max-time 10 \
331
+ https://storage.googleapis.com/bazel/0.27.0/release/bazel-0.27.0-installer-linux-x86_64.sh && \
332
+ sudo mkdir -p /usr/local/bazel/0.27.0 && \
333
+ chmod 755 bazel-0.27.0-installer-linux-x86_64.sh && \
334
+ sudo ./bazel-0.27.0-installer-linux-x86_64.sh --prefix=/usr/local/bazel/0.27.0 && \
335
+ source /usr/local/bazel/0.27.0/lib/bazel/bin/bazel-complete.bash
336
+
337
+ username@DESKTOP-TMVLBJ1:~$ /usr/local/bazel/0.27.0/lib/bazel/bin/bazel version && \
338
+ alias bazel=' /usr/local/bazel/0.27.0/lib/bazel/bin/bazel'
339
+ ```
340
+
341
+ 6. Checkout mediapipe repository
342
+
343
+ ```bash
344
+ username@DESKTOP-TMVLBJ1:~$ git clone https://github.com/google/mediapipe.git
345
+
346
+ username@DESKTOP-TMVLBJ1:~$ cd mediapipe
347
+ ```
348
+
349
+ 7. Install OpenCV
350
+
351
+ Option 1. Use package manager tool to install the pre-compiled OpenCV
352
+ libraries.
353
+
354
+ ```bash
355
+ username@DESKTOP-TMVLBJ1:~/mediapipe$ sudo apt-get install libopencv-core-dev libopencv-highgui-dev \
356
+ libopencv-imgproc-dev libopencv-video-dev
357
+ ```
358
+
359
+ Option 2. Run [`setup_opencv.sh`] to automatically build OpenCV from source
360
+ and modify MediaPipe' s OpenCV config.
361
+
362
+ Option 3. Follow OpenCV' s
363
+ [documentation](https://docs.opencv.org/3.4.6/d7/d9f/tutorial_linux_install.html)
364
+ to manually build OpenCV from source code.
365
+
366
+ Note: You may need to modify [`WORKSAPCE`] and [`opencv_linux.BUILD`] to
367
+ point MediaPipe to your own OpenCV libraries, e.g., if OpenCV 4 is installed
368
+ in "/usr/local/", you need to update the "linux_opencv" new_local_repository
369
+ rule in [`WORKSAPCE`] and "opencv" cc_library rule in [`opencv_linux.BUILD`]
370
+ like the following:
371
+
372
+ ```bash
373
+ new_local_repository(
374
+ name = "linux_opencv",
375
+ build_file = "@//third_party:opencv_linux.BUILD",
376
+ path = "/usr/local",
377
+ )
378
+
379
+ cc_library(
380
+ name = "opencv",
381
+ srcs = glob(
382
+ [
383
+ "lib/libopencv_core.so*",
384
+ "lib/libopencv_highgui.so*",
385
+ "lib/libopencv_imgcodecs.so*",
386
+ "lib/libopencv_imgproc.so*",
387
+ "lib/libopencv_video.so*",
388
+ "lib/libopencv_videoio.so*",
389
+
390
+ ],
391
+ ),
392
+ hdrs = glob(["include/opencv4/**/*.h*"]),
393
+ includes = ["include/opencv4/"],
394
+ linkstatic = 1,
395
+ visibility = ["//visibility:public"],
396
+ )
397
+
398
+ ```
399
+
400
+ 8. Run the hello world desktop example
401
+
402
+ ```bash
403
+ username@DESKTOP-TMVLBJ1:~/mediapipe$ export GLOG_logtostderr=1
404
+
405
+ # Need bazel flag ' MEDIAPIPE_DISABLE_GPU=1' as desktop GPU is currently not supported
406
+ username@DESKTOP-TMVLBJ1:~/mediapipe$ bazel run --define ' MEDIAPIPE_DISABLE_GPU=1' \
407
+ mediapipe/examples/desktop/hello_world:hello_world
408
+
409
+ # Should print:
410
+ # Hello World!
411
+ # Hello World!
412
+ # Hello World!
413
+ # Hello World!
414
+ # Hello World!
415
+ # Hello World!
416
+ # Hello World!
417
+ # Hello World!
418
+ # Hello World!
419
+ # Hello World!
420
+ ```
421
+
302
422
### Installing using Docker
303
423
304
424
This will use a Docker image that will isolate mediapipe' s installation from the rest of the system.
0 commit comments