(CMake) Installez doucement OpenCV officiel sur WSL (C / C ++, Python2, Python3)

Article connexe: Procédure d'installation du sous-système Windows facile pour Linux (WSL)

introduction

J'ai ** installé la version officielle d'OpenCV 4.1.2 sur Ubuntu de WSL (sous-système Windows pour Linux) **, je la garderai donc en mémoire.

La cible est ** pour ceux qui souhaitent utiliser OpenCV avec C ++ **. Je vais l'installer pour qu'il puisse être utilisé avec Python2 et Python3, mais si vous voulez l'utiliser uniquement avec Python, cela semble facile si vous incluez ʻopencv-python`. Aussi, j'essaierai d'expliquer autant que possible les commandes qui apparaissent au milieu.

Veuillez vous référer à la ** page officielle d'OpenCV ** (Installation sous Linux).

version

L'environnement sur lequel j'ai travaillé cette fois était le suivant. Pour votre information. Windows 10 Home Version 1809 Ubuntu 18.04.3 LTS OpenCV4.1.2-dev Python 2.7.15+ Python 3.6.8

Aperçu

―― 1. Installation du package --1.1 Paquets requis --1.2 Python-dev et numpy --1.3 Options ―― 2. Obtention du code source OpenCV ―― 3. Création d'un makefile avec CMake --4 faire l'installation --5 Contrôle de fonctionnement (affichage de la version) - 5.1 Python2 - 5.2 Python3 - 5.3 C++ --Construire en utilisant 5.3.1 cmake --5.3.2 Construire avec pkg-config [](\ -6 Contrôle de fonctionnement (reconnaissance faciale) - 6.1 Python2 - 6.2 Python3 - 6.3 C++) ―― 6. Autre ―― 7. Référence

Veuillez noter que le travail de ** 4. ** prend un temps d'attente (environ 30 minutes), alors faites-le quand vous en avez le temps.

1. Installation du package

Exécutez la partie correspondant aux ** Packages requis ** sur la page officielle (Introduction à OpenCV).   <détails> <résumé <> Cliquez ici si vous souhaitez installer de ** 1,1 ** à ** 1,3 ** ci-dessous </ résumé>

$ sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libvtk5-qt4-dev libqt4-dev libqt4-opengl-dev libgtkglext1 libgtkglext1-dev python-dev python-numpy python3-dev python3-numpy

1.1 Paquets requis

Pour le moment, si vous avez ceci, vous pouvez ** installer OpenCV ** et l'utiliser avec ** C ++ **. Exécutez la commande suivante pour installer le package.

$ sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

** Description de chaque forfait ** ** build-essential: ** * Compilateurs tels que gcc et g ++, make, etc. * ** cmake: ** Cette fois, il est utilisé dans le but de créer un makefile lors de l'exécution d'un make build. Il est également utilisé pour le contrôle de fonctionnement ** 5.3.1 **, veuillez donc vous y référer (https://kamino.hatenablog.com/entry/cmake_tutorial1). ** git: ** Cette fois, je ne l'utiliserai que lorsque j'aurai le code source d'OpenCV, mais si vous êtes intéressé, [ici](https: //) Veuillez vous reporter à qiita.com/jesus_isao/items/63557eba36819faa4ad9). ** libgtk2.0-dev: ** GTK Développement de bibliothèques Cela semble être un package pour, mais peut-être est-il lié au framework GUI d'OpenCV ** pkg-config: ** Facilite la compilation avec gcc, g ++. Le contrôle de fonctionnement ** 5.3.2 ** expliquera brièvement. ** libavcodec-dev, libavformat-dev, libswscale-dev: ** Paquets de développement FFmpeg et Libav.

1.2 Python-dev et numpy

Installez Python2 et Python3, et leurs [numpy] correspondants (https://ja.wikipedia.org/wiki/NumPy).

$ sudo apt install python-dev python-numpy python3-dev python3-numpy

: avertissement: ** Remarque: python et python-dev sont différents. Si vous avez déjà python, veuillez exécuter la commande ci-dessus! ** ** (Python-dev est un package de développement qui inclut python. Vous pouvez l'installer plusieurs fois.)

<détails> <résumé> Vérification de la version Python </ résumé>

#Vérification de la version de Python 2
$ python -V

#Vérification de la version de Python 3
$ python3 -V
Vous pouvez vérifier la version de numpy avec \ _ \ _ version__ ainsi que ** 5.1 ** et ** 5.2 **.

1.3 Options

Vous pouvez utiliser OpenCV sans installer les packages suivants. Sélectionnez celui dont vous avez besoin et installez-le. Si vous vous perdez, installez-le pour le moment.

$ sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libvtk5-qt4-dev libqt4-dev libqt4-opengl-dev libgtkglext1 libgtkglext1-dev

** Description de chaque forfait ** ** libtbb2, libtbb-dev: ** Activer le traitement parallèle par TBB (Threading Building Blocks) ** libjpeg-dev, libpng-dev, libtiff-dev: ** Permet la gestion des fichiers image au format jpeg, png, tiff ** libdc1394-22-dev: ** Interface de programmation de haut niveau pour les appareils photo numériques IEEE1394 ** libvtk5-qt4-dev, libqt4-dev, libqt4-opengl-dev, libgtkglext1, libgtkglext1-dev: ** Paquets liés à l'interface graphique tels que QT, OpenGL, GTK

2. Obtention du code source OpenCV

OpenCV et OpenCV contrib de ce référentiel (OpenCV) et ce référentiel (OpenCV contrib) Mettez le code source de est directement sous le répertoire personnel. (Référence) Introduction à opencv_contrib

#Déplacer vers le répertoire de base
$ cd ~

#Obtenez le code source OpenCV
$ git clone https://github.com/opencv/opencv.git

#Obtenez le code source de la contribution OpenCV
$ git clone https://github.com/opencv/opencv_contrib.git

Si vous voulez changer de branche (par exemple, si vous voulez changer la version d'OpenCV que vous voulez installer), faites quelque chose comme git checkout 2.4.0 sous ~ / opencv.

3. Création d'un makefile avec CMake

3.1 Créer un répertoire pour la construction

Exécutez la commande suivante pour créer un répertoire pour build (ici, le répertoire nommé build) directement sous ~ / opencv.

$ cd ~/opencv
$ mkdir build
$ cd build

3.2 Exécution de CMake

CMake (créer un makefile lors d'une compilation make) tout en définissant les options faisant référence à CMakeLists.txt. Exécutez la commande suivante.

$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D OPENCV_GENERATE_PKGCONFIG=ON ..

: avertissement: ** Note 1: N'oubliez pas les deux derniers points .. de la commande CMake! ** ** (Ceci représente la hiérarchie un niveau au-dessus du répertoire actuel. Il sert à spécifier l'emplacement des CMakeLists à référencer lors de l'exécution de cmake.)

: avertissement: ** Remarque 2: Si la commande ci-dessus ne fonctionne pas, supprimez tous les espaces après -D comme -DCMAKE_BUILD_TYPE = Release et réessayez ** (-D est une option de CMake et signifie réécriture.)

** Description de l'option ** ** CMAKE_BUILD_TYPE **: spécifiez le mode au moment de la construction ** CMAKE_INSTALL_PREFIX **: spécifiez la destination de l'installation ** OPENCV_EXTRA_MODULES_PATH **: Spécifiez le chemin de OpenCV_contrib ** OPENCV_GENERATE_PKGCONFIG **: Créer un fichier .pc dans pkgconfig (utilisé lors de la compilation de C ++) ** WITH_TBB **: utiliser TBB (Threading Building Blocks) (exécuter C ++ en parallèle) ** WITH_OPENGL **: Utilisation d'OPENGL ** WITH_VTK **: Utilisation de VTK

<détails>

CMake résultat de l'exécution </ summary>
Si vous suivez la procédure ci-dessus jusqu'à présent, vous obtiendrez le résultat d'exécution suivant.

-- General configuration for OpenCV 4.1.2-dev =====================================
--   Version control:               4.1.2-121-g5dd3e6052e
--
--   Extra modules:
--     Location (extra):            /home/(Nom d'utilisateur)/opencv_contrib/modules
--     Version control (extra):     4.1.2-32-g61cbb445
--
--   Platform:
--     Timestamp:                   2019-11-10T16:00:51Z
--     Host:                        Linux 4.4.0-17763-Microsoft x86_64
--     CMake:                       3.10.2
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/make
--     Configuration:               Release
--
--   CPU/HW features:
--     Baseline:                    SSE SSE2 SSE3
--       requested:                 SSE3
--     Dispatched code generation:  SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
--       requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
--       SSE4_1 (16 files):         + SSSE3 SSE4_1
--       SSE4_2 (2 files):          + SSSE3 SSE4_1 POPCNT SSE4_2
--       FP16 (1 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
--       AVX (5 files):             + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
--       AVX2 (29 files):           + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
--       AVX512_SKX (6 files):      + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX
--
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ Compiler:                /usr/bin/c++  (ver 7.4.0)
--     C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      -Wl,--gc-sections
--     Linker flags (Debug):        -Wl,--gc-sections
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m pthread rt /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGLU.so
--     3rdparty dependencies:
--
--   OpenCV modules:
--     To be built:                 aruco bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hdf hfs highgui img_hash imgcodecs imgproc line_descriptor ml objdetect optflow phase_unwrapping photo plot python2 python3 quality reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab viz xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv java js matlab ovis sfm
--     Applications:                tests perf_tests apps
--     Documentation:               NO
--     Non-free algorithms:         NO
--
--   GUI:
--     GTK+:                        YES (ver 2.24.32)
--       GThread :                  YES (ver 2.56.4)
--       GtkGlExt:                  YES (ver 1.2.0)
--     OpenGL support:              YES (/usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGLU.so)
--     VTK support:                 YES (ver 7.1.1)
--
--   Media I/O:
--     ZLib:                        /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.11)
--     JPEG:                        /usr/lib/x86_64-linux-gnu/libjpeg.so (ver 80)
--     WEBP:                        /usr/lib/x86_64-linux-gnu/libwebp.so (ver encoder: 0x020e)
--     PNG:                         /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.6.34)
--     TIFF:                        /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 / 4.0.9)
--     JPEG 2000:                   build (ver 1.900.1)
--     OpenEXR:                     build (ver 2.3.0)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
--
--   Video I/O:
--     DC1394:                      YES (2.2.5)
--     FFMPEG:                      YES
--       avcodec:                   YES (57.107.100)
--       avformat:                  YES (57.83.100)
--       avutil:                    YES (55.78.100)
--       swscale:                   YES (4.8.100)
--       avresample:                NO
--     GStreamer:                   NO
--     v4l/v4l2:                    YES (linux/videodev2.h)
--
--   Parallel framework:            TBB (ver 2017.0 interface 9107)
--
--   Trace:                         YES (with Intel ITT)
--
--   Other third-party libraries:
--     Intel IPP:                   2019.0.0 Gold [2019.0.0]
--            at:                   /home/(Nom d'utilisateur)/opencv/build/3rdparty/ippicv/ippicv_lnx/icv
--     Intel IPP IW:                sources (2019.0.0)
--               at:                /home/(Nom d'utilisateur)/opencv/build/3rdparty/ippicv/ippicv_lnx/iw
--     Lapack:                      NO
--     Eigen:                       YES (ver 3.3.4)
--     Custom HAL:                  NO
--     Protobuf:                    build (3.5.1)
--
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/(Nom d'utilisateur)/opencv/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
--
--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.15)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.15+)
--     numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.13.3)
--     install path:                lib/python2.7/dist-packages/cv2/python-2.7
--
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.6.8)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.6m.so (ver 3.6.8)
--     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.13.3)
--     install path:                lib/python3.6/dist-packages/cv2/python-3.6
--
--   Python (for build):            /usr/bin/python2.7
--
--   Java:
--     ant:                         NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
--
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/(Nom d'utilisateur)/opencv/build
Si vous regardez ** ↑ **, vous pouvez voir que cv2 est installé sous `dist-packages /` de chacun de python2 et python3.

4. faire l'installation

make Build. -j * est une option de la commande make pour traiter les builds en parallèle. Exécutez la commande suivante. Cela peut prendre environ 30 minutes. (L'option parallèle est définie sur 7 selon Page officielle)

$ make -j7

Ensuite, effectuez l'installation. Exécutez la commande suivante.

$ sudo make install

L'installation est terminée!

5. Contrôle de fonctionnement (affichage de la version)

Pour Python2 et Python3, c'est facile car je pense que le chemin est déjà en place. Pour C ++, créez un Makefile avec CMake ou passez-le avec pkg-config.

Ce qui suit suppose que vous exécutez directement sous ~ / opencv. Accédez à votre répertoire personnel avec cd ~ / opencv.

5.1 Python2 Lancez Python à partir de la ligne de commande pour afficher la version en mode interactif. (Exécutez Python à partir de la ligne de commande)

Tout d'abord, démarrez le mode interactif Python 2.

$ python2 #Appel du mode interactif

Ensuite, importez OpenCV en mode interactif et affichez la version d'OpenCV.

>> import cv2 #Importation OpenCV
>> print(cv2.__version__) #Voir la version

Lorsque la version installée d'OpenCV est affichée, le contrôle de fonctionnement est terminé. Quittez le mode interactif.

>> exit() #Fin du mode interactif

5.2 Python3 ** 5.1 ** C'est OK si vous pouvez exécuter exactement la même chose que vérifier le fonctionnement de python2 avec python3.

5.3 C++ Quand j'ai écrit comment utiliser CMake et comment utiliser pkg-config, il est devenu inopinément long, donc je le posterai dans un autre article. Compilez le code C ++ en utilisant OpenCV (CMake, GCC, pkg-config)

[](\ # 6. Vérification du fonctionnement (reconnaissance faciale) ###6.1 Python2 ###6.2 Python3 ###6.3 C++)

6. Autre

L'utilisation d'OpenCV améliore non seulement la reconnaissance d'image, mais il est également bon qu'il soit très facile de gérer des fichiers image dans différents formats.

En fait, j'ai essayé de faire quelque chose de plus comme opencv en plus de l'affichage de la version pour vérifier le fonctionnement, mais je suis fatigué donc je vais le faire cette fois

7. Référence

Recherchez le contenu du package (https://packages.ubuntu.com/ja/) Comment utiliser CMake Part 1-3 (https://qiita.com/shohirose/items/45fb49c6b429e8b204ac#_reference-27dce2bd429efef9488e)

Recommended Posts

(CMake) Installez doucement OpenCV officiel sur WSL (C / C ++, Python2, Python3)
Installer python sur WSL
Installez OpenCV sur Ubuntu + python
Comment installer OpenCV sur Jetson Nano Python
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
[Python] Comment installer OpenCV sur Anaconda [Windows]
Installez Python sur Pidora.
Installez Scrapy sur python3
Installez Python sur Mac
Installer Python 3 dans un environnement Mac
Installez Python3.4 sur CentOS 6.6
Installez python sur Windows
Installez Python 2.7.3 sur CentOS 5.4
Installez Python 3.3 sur Ubuntu 12.04
Installez Python 3.4 sur Mac
Installez Python 3.6 sur Docker
Installez Python 3.8 sur RHEL 8 (AppStream)
Installer watchdog sur Windows + Python 3.3
Installer pygame sur python3.4 sur Mac
Installez Python 3.8 sur CentOS 7 (SCL)
Installez pandas 0.14 sur python3.4 [sur Mac]
wsl Installer PostgreSQL sur Ubuntu 18.04
Python --Installez MySQLDB sur EC2
Installez Python 3.8 sur CentOS 8 (AppStream)
Installer Docker sur WSL Ubuntu 18.04
[Python] [Chainer] [Windows] Installer Chainer sous Windows
Installez OpenCV4 sur Raspberry Pi 3
Installez Python Pillow sur Amazon Linux
Installez Python 3.8 sur Ubuntu 18.04 (norme du système d'exploitation)
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Installez Python 3 sur le serveur Sakura (FreeBSD)
Installez OpenCV et Chainer sur Ubuntu
Installez Python 3.8 sur Ubuntu 20.04 (norme du système d'exploitation)
installation de python2.7 dans un environnement Windows 32 bits
Installez xgboost (version python) sur Windows
Installez Python sur Windows + pip + virtualenv
Construisez et installez OpenCV sur Windows
Installez Pytorch sur Blender 2.90 python sous Windows
Installez Python 3.7 Anaconda sur MAC, mais Python 2
Installer python3 sur Mac (El Capitan)
Installez rapidement OpenCV2.4 (+ python) sur OS X et essayez l'exemple
Comment installer OpenCV sur Mac
Installez Python 3.9 sur Ubuntu 20.04 (norme du système d'exploitation?)
Installer l'environnement de développement Python sur Windows 10
Installer Python sur CentOS à l'aide de Pyenv
Installez confluent-kafka pour Python sur Ubuntu
Installez Python 2.7 sur Ubuntu 20.04 (norme du système d'exploitation?)
Étapes pour installer python3 sur Mac
Installez Python sur CentOS en utilisant pyenv
Appeler C / C ++ depuis Python sur Mac
Construction d'environnements OpenCV3 et Python3 sur Ubuntu
Ne fonctionne pas Python avec OpenCV sur le processeur AMD Ryzen sur WSL2 Ubuntu 18.04 et 20.04
Remarques sur l'utilisation d'OpenCV avec Windows10 Python 3.8.3.
Exécuter du code Python sur C ++ (en utilisant Boost.Python)
Créer un environnement Python 3 et OpenCV sur Ubuntu 18.04
[Kivy] Comment installer Kivy sur Windows [Python]
Installez wsl2 et master linux sous Windows
Installez la bibliothèque python sur Lambda à l'aide de [/ tmp]
[C] [python] Lire avec AquesTalk sous Linux
Étapes pour installer l'environnement Python sur Ubuntu