Description des paramètres facultatifs dans le processus de compilation d'opencv à l'aide de cmake

Déclaration environnementale

  • version opencv : 4.5.5

introduire

Lors de la compilation d'opencv à partir du code source, cmake peut avoir de nombreux paramètres facultatifs. Ces paramètres facultatifs sont expliqués ici.
Les options de configuration peuvent être définies de plusieurs manières différentes :

  • Ligne de commande : cmake-Doption=valeur…
  • Fichier cache initial : cmake-C my_options.txt…
  • Paramétrage via Cmake-GUI

Dans cette référence, nous utiliserons la ligne de commande habituelle.

# 初始化配置文件
cmake ../opencv
# 打印所有选项
cmake -L
# 打印所有选项,附带说明文档
cmake -LH
# 打印所有选项,包括高级
cmake -LA

Les plus couramment utilisées et utiles sont les options commençant par with_, ENABLE_, BUILD_, OPENCV_. La valeur par défaut varie selon la plate-forme et les autres valeurs d'option.

Options générales

1.Construire avec des modules supplémentaires

L'option OPENCV_EXTRA_MODULES_PATH contient une liste de répertoires séparés par des points-virgules contenant des modules supplémentaires qui seront ajoutés à la build. Le répertoire du module doit avoir une mise en page compatible et CMakeList.txt. Seuls les emplacements de modules profonds de niveau 0 et de niveau 1 sont pris en charge.

# 使用opencv_contrib中的所有模块进行构建
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv
# 使用opencvcontrib模块之一构建
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/bgsegm ../opencv
# 使用两个自定义模块构建(必须在bash中转义分号)
cmake -DOPENCV_EXTRA_MODULES_PATH=../my_mod1\;../my_mod2 ../opencv

2.Construction de débogage

L'option CMAKE_BUILD_TYPE peut être utilisée pour activer les builds de débogage ; les binaires résultants contiendront des symboles de débogage et la plupart des optimisations du compilateur seront désactivées. Pour activer les symboles de débogage dans les versions Release, activez l’option build_WITH_debug_INFO.
Sur certaines plateformes (comme Linux), le type de build doit être défini lors de la phase de configuration :

cmake -DCMAKE_BUILD_TYPE=Debug ../opencv
cmake --build .

Sur d'autres plateformes, différents types de builds peuvent être générés dans le même répertoire de build (par exemple Visual Studio, XCode) :

cmake <options> ../opencv
cmake --build . --config Debug

Si vous utilisez GNU libstdc++ (valeur par défaut de GCC), vous pouvez activer l'option ENABLE_GNU_STL_DEBUG et la bibliothèque C++ sera alors utilisée en mode débogage, par exemple l'indexation sera vérifiée lors de l'accès aux éléments vectoriels. Diverses optimisations peuvent être désactivées à l'aide de l'option CV_DISABLE_OPTIMIZATION :

  • Certaines bibliothèques tierces (telles que IPP, Lapack, Eigen)
  • Implémentation vectorisée explicite (intrinsèques génériques, intrinsèques primitifs, etc.)
  • Optimisation de la planification
  • déroulement de boucle explicite

3. Construction statique

L'option BUILD_SHARED_LIBS contrôle si les bibliothèques dynamiques (.dll, .so, .dylib) ou statiques (.a, .lib) sont générées. La valeur par défaut dépend de la plateforme cible et est activée dans la plupart des cas.

cmake -DBUILD_SHARED_LIBS=OFF ../opencv

ENABLE_PIC définit l'option CMAKE_POSITION_INDEPENDENT_CODE. Il active ou désactive la génération de « code indépendant de la position ». Cette option doit être activée lors de la construction d'une bibliothèque dynamique ou d'une bibliothèque statique à lier à une bibliothèque dynamique. La valeur par défaut est ON.

4.Générer les informations de pkg-config

L'option OPENCV_GENERATE_PKGCONFIG permet la génération de fichiers .pc ainsi que les packages CMake standard. Ce fichier est utile pour les projets qui n'utilisent pas CMake pour la construction.

cmake -DOPENCV_GENERATE_PKGCONFIG=ON ../opencv

5.Créer des tests, des échantillons et des applications

Il existe deux types de tests : la précision (opencv_test_ ) et les performances (opencv_perf_ ). Les tests et les applications sont activés par défaut. Les échantillons ne sont pas générés par défaut et doivent être activés explicitement. Options cmake correspondantes :

cmake \
  -DBUILD_TESTS=ON \
  -DBUILD_PERF_TESTS=ON \
  -DBUILD_EXAMPLES=ON \
  -DBUILD_opencv_apps=ON \
  ../opencv

6.Créer un ensemble limité de modules

Chaque module est un sous-répertoire du répertoire modules. Un module peut être désactivé :

cmake -DBUILD_opencv_calib3d=OFF ../opencv

L'option opposée consiste à construire uniquement le module spécifié et tous les modules dont il dépend :

cmake -DBUILD_LIST=calib3d,videoio,ts ../opencv

Dans cet exemple, nous avons demandé 3 modules et le script configure a automatiquement déterminé toutes les dépendances :

--   OpenCV modules:
--     To be built:                 calib3d core features2d flann highgui imgcodecs imgproc ts videoio

7. Téléchargez les bibliothèques dépendantes

Le script de configuration peut essayer de télécharger d'autres bibliothèques et fichiers depuis Internet. En cas d'échec, la fonction correspondante sera désactivée. Dans certains cas, des erreurs de configuration peuvent survenir. Par défaut, tous les fichiers sont téléchargés dans / en premier. Cachez le répertoire et décompressez ou copiez dans le répertoire de construction. L'emplacement du cache de téléchargement peut être modifié en définissant une variable d'environnement ou une option de configuration :

export OPENCV_DOWNLOAD_PATH=/tmp/opencv-cache
cmake ../opencv
# or
cmake -DOPENCV_DOWNLOAD_PATH=/tmp/opencv-cache ../opencv

Si vous accédez via un proxy, les variables d'environnement appropriées doivent être définies avant d'exécuter cmake :

export http_proxy=<proxy-host>:<port>
export https_proxy=<proxy-host>:<port>

Le journal complet du processus de téléchargement se trouve dans le répertoire de construction - CMakeDownloadLog.txt. De plus, pour chaque échec de téléchargement, une commande sera ajoutée au script d'assistance dans le répertoire de construction, telle que download_with_wget.sh. Les utilisateurs peuvent exécuter ces scripts tels quels ou les modifier selon leurs besoins.

Fonctionnalités et dépendances

Il existe de nombreuses dépendances et fonctionnalités facultatives qui peuvent être activées ou désactivées. cmake a une option spéciale qui permet d'imprimer tous les paramètres de configuration disponibles :

cmake -LH ../opencv

Il existe trois options pour contrôler les dépendances des bibliothèques, avec des préfixes différents :

  • Options commençant par with_ activer ou désactiver les dépendances
  • Option pour activer ou désactiver la création et le démarrage avec des bibliothèques tierces livrées avec OpenCV à partir de BUILD_
  • Les options commençant par HAVE_ indiquent que la dépendance est activée et peuvent être utilisées pour activer la dépendance manuellement si la détection automatique n'est pas possible.

Lorsque l'option WITH_ est activée :

  • Si l'option BUILD_ est activée, les bibliothèques tierces seront construites et activées => HAVE_ est défini sur ON
  • Si BUILD_option est désactivée, les bibliothèques tierces seront détectées et activées (si trouvées) => HAVE_ est défini sur ON (si des dépendances sont trouvées)

1. Prise en charge CUDA

WITH_CUDA (default: OFF)

De nombreux algorithmes ont été implémentés à l'aide de l'accélération CUDA et ces fonctions sont situées dans des modules séparés. La boîte à outils CUDA doit être installée à partir du site officiel de NVIDIA. Pour les versions cmake antérieures à 3.9, OpenCV utilise son propre cmake/FindCUDA. script cmake, pour les versions plus récentes - celles fournies avec cmake. D'autres options sont disponibles pour contrôler le processus de construction, telles que CUDA_GENERATION ou CUDA_ARCH_BIN. Ces paramètres ne sont pas encore documentés, veuillez consulter cmake/OpenCVDetectCUDA. cmake script pour obtenir des détails.

2. Prise en charge d'OpenCL

WITH_OPENCL (default: ON)

Plusieurs algorithmes d'accélération OpenCL sont disponibles via ce que l'on appelle « API transparente (T-API) ». Cette intégration implémente la même fonctionnalité au niveau utilisateur en utilisant un processeur standard. Si les paramètres d'image d'entrée et de sortie sont transmis sous forme d'objets opaques cv::UMat, passez à la branche d'exécution OpenCL. Plus d'informations peuvent être trouvées dans Introduction et prise en charge d'OpenCL.
Il n'y a aucune condition préalable pour cette fonctionnalité au moment de la construction. Au moment de l'exécution, un runtime OpenCL fonctionnel est requis, exécutez les commandes clinfo et/ou opencv_version –OpenCL pour le vérifier. Certains paramètres de l'intégration OpenCL peuvent être modifiés à l'aide de variables d'environnement, telles que OPENCV_OpenCL_DEVICE. Cependant, il n'existe pas de documentation complète sur cette fonctionnalité, veuillez donc vérifier le code source dans modules/core/src/ocl. Voir le fichier cpp pour plus de détails.

3. Lecture et écriture d'images (module imgcodecs)

OpenCV peut lire les formats suivants sans l'aide d'une bibliothèque tierce :

  • PGB
  • HDR (WITH_IMGCODEC_HDR)
  • Raster solaire (WITH_IMGCODEC_SUNRASTER)
  • PPM, PGM, PBM, PFM (WITH_IMGCODEC_PXM, WITH_IMGCODEC_PFM)

Insérer la description de l'image ici

Toutes les bibliothèques nécessaires pour lire les images dans ces formats sont incluses dans OpenCV et seront construites automatiquement si elles ne sont pas trouvées lors de la phase de configuration. Les options BUILD_* correspondantes forceront la création et l'utilisation de vos propres bibliothèques, qui sont activées par défaut sur certaines plates-formes (par exemple Windows).

(1)Intégration GDAL
WITH_GDAL (default: OFF)

GDAL est une bibliothèque de niveau supérieur qui prend en charge la lecture de divers formats de fichiers, notamment PNG, JPEG et TIFF. Il a une priorité plus élevée lors de l’ouverture de fichiers et peut remplacer les autres backends. Cette bibliothèque sera recherchée à l'aide du mécanisme du package cmake, en s'assurant qu'elle est correctement installée ou en définissant manuellement l'environnement GDAL_DIR ou la variable cmake.

(2)Intégration GDCM
WITH_GDCM (default: OFF)

Activez la prise en charge du format d'image médicale DICOM via la bibliothèque GDCM. Cette bibliothèque sera recherchée à l'aide du mécanisme du package cmake, en s'assurant qu'elle est correctement installée ou en définissant manuellement l'environnement GDCM_DIR ou la variable cmake.

4. Lecture et écriture vidéo (module videoio)

(1)Vidéo4Linux
WITH_V4L (Linux; default: ON )

Capturez des images depuis la caméra à l'aide de l'API Video4Linux. Les en-têtes du noyau Linux doivent être installés.

(2)FFmpeg
WITH_FFMPEG (default: ON)

S'intègre à la bibliothèque FFmpeg pour décoder et encoder les fichiers vidéo et les flux réseau. Cette bibliothèque peut lire et écrire de nombreux formats vidéo populaires. Il se compose de plusieurs composants qui doivent être installés comme prérequis pour le build :

  • avcodec
  • formatav
  • sur l'assistant
  • échelle sw
  • échantillon (facultatif)

L'exception est la plate-forme Windows, où la bibliothèque de plugins prédéfinie contenant FFmpeg sera téléchargée pendant la phase de configuration et copiée dans le dossier bin avec toutes les bibliothèques générées.

(3) GStreamer
WITH_GSTREAMER (default: ON)

Prend en charge l'intégration avec la bibliothèque GStreamer pour décoder et encoder des fichiers vidéo, capturer des images de caméras et de flux réseau. De nombreux plugins peuvent être installés pour étendre la liste des formats pris en charge. OpenCV permet d'exécuter des pipelines GStreamer arbitraires transmis sous forme de chaînes aux objets cv::VideoCapture et cv::Video Writer. Divers plugins GStreamer fournissent un traitement vidéo accéléré par le matériel sur différentes plates-formes.

(4)Fondation Microsoft Media
WITH_MSMF (Windows; default: ON)

Active le backend MSMF à l’aide du framework Media Foundation intégré à Windows. Peut être utilisé pour capturer des images de caméras, décoder et encoder des fichiers vidéo. Ce backend prend en charge le traitement accéléré par le matériel (option WITHH_MSMF_DXVA, la valeur par défaut est ON).

(5) DirectShow
WITH_DSHOW (Windows; default: ON)

Ce backend utilise l'ancien framework DirectShow. Il ne peut être utilisé que pour capturer des images de la caméra. Il est désormais obsolète au profit du backend MSMF, bien que les deux puissent être activés dans la même version.

(6)Fondation AV
WITH_AVFOUNDATION (Apple; default: ON)

Le framework AVFoundation fait partie de la plate-forme Apple et peut être utilisé pour capturer des images de caméras, encoder et décoder des fichiers vidéo.

(7)Autres back-ends

Il existe une variété de frameworks moins populaires pour lire et écrire des vidéos. Chacun nécessite l’installation de la bibliothèque ou du SDK correspondant.
Insérer la description de l'image ici

5. Prise en charge du backend multithread

Certains algorithmes OpenCV peuvent utiliser le multithreading pour accélérer le traitement. OpenCV peut être construit avec l'un des backends de threading.
Insérer la description de l'image ici
OpenCV peut télécharger et créer la bibliothèque TBB à partir de GitHub, cette fonctionnalité peut être activée via l'option build_TBB.

6. Prise en charge du backend d'affichage de l'interface GUI (module highgui)

OpenCV s'appuie sur diverses bibliothèques GUI pour dessiner des fenêtres.
Insérer la description de l'image ici

7. Prise en charge du backend du réseau neuronal d'apprentissage profond (module dnn)

OpenCV possède son propre module d'inférence DNN, qui possède son propre moteur intégré, mais d'autres bibliothèques peuvent également être utilisées pour l'optimisation. Plusieurs backends peuvent être activés dans une seule version. Choisissez de le faire automatiquement ou manuellement au moment de l'exécution.
Insérer la description de l'image ici

8. Installation et emplacement de la bibliothèque

Des options peuvent être utilisées pour contrôler si une partie de la bibliothèque est installée :
Insérer la description de l'image ici
Les options suivantes permettent de modifier l'emplacement d'installation d'un composant par rapport au préfixe d'installation. Les valeurs par défaut de ces options dépendent de la plateforme et pour les autres options, vérifiez cmake/OpenCVInstallLayout. cmake pour des informations détaillées.
Insérer la description de l'image ici

9.Autres fonctions

Insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_30150579/article/details/128283426
conseillé
Classement