OpenCV

De system.co.free.fr.
(Différences entre les versions)
(Compilation Version 2.4.5)
 
(2 versions intermédiaires masquées)
Ligne 17 : Ligne 17 :
*[http://code.opencv.org/projects/opencv/wiki http://code.opencv.org/projects/opencv/wiki]
*[http://code.opencv.org/projects/opencv/wiki http://code.opencv.org/projects/opencv/wiki]
*Dans OpenCV-2.4.2/doc/ vous trouverez de la documentation pour l'installation, les premières utilisation avec des tutoriaux, ...
*Dans OpenCV-2.4.2/doc/ vous trouverez de la documentation pour l'installation, les premières utilisation avec des tutoriaux, ...
-
 
-
===Compilation Version 2.4.2===
 
-
 
-
2013/01/10 ligne de commande de préparation à la compilation cmake: <br>
 
-
 
-
  mkdir OpenCV-2.4.2/OpenCV.build
 
-
 
-
  cmake -DWITH_OPENGL:bool=ON -DWITH_QT:bool=ON -DWITH_TBB:bool=ON -DBUILD_EXAMPLES:bool=ON -DBUILD_DOCS:bool=ON <br>-DINSTALL_C_EXAMPLES:bool=ON -DWITH_UNICAP:bool=ON -DWITH_GTK:bool=ON -DWITH_OPENEXR:bool=ON -DENABLE_SSE3:bool=ON ..
 
-
 
-
Voir le fichier OpenCV-2.4.2/CMakeList.txt pour les options de CMake.<br>
 
-
Dans notre cas des librairies doivent etre installé avant le passage de cmake: TBB, OpenEXR, Python, OpenGL ( celles d'AMD sont parfaites quand on a une carte graphique AMD), pkgconfig, ffmpeg, libav, libjpeg-dev, ...
 
Ligne 112 : Ligne 101 :
<pre>
<pre>
cmake -D BUILD_EXAMPLES:bool=ON -D WITH_OPENCL:bool=ON -D WITH_OPENCLAMDFFT:bool=ON -D WITH_OPENCLAMDBLAS:bool=ON -D WITH_QT:bool=ON  
cmake -D BUILD_EXAMPLES:bool=ON -D WITH_OPENCL:bool=ON -D WITH_OPENCLAMDFFT:bool=ON -D WITH_OPENCLAMDBLAS:bool=ON -D WITH_QT:bool=ON  
-
-D WITH_OPENGL:bool=ON -D ENABLE_SSE:bool=ON -D ENABLE_SSE2:bool=ON -D ENABLE_SSE3:bool=ON -D ENABLE_OPENMP:bool=ON -D ENABLE_SSE41:bool=ON -D ENABLE_SSE42:bool=ON  
+
-D WITH_OPENGL:bool=ON -D ENABLE_SSE:bool=ON -D ENABLE_SSE2:bool=ON -D ENABLE_SSE3:bool=ON -D ENABLE_SSE41:bool=ON
-
-D WITH_TBB:bool=ON -D CMAKE_BUILD_TYPE:STRING=RELEASE ..
+
-D ENABLE_SSE42:bool=ON -D WITH_TBB:bool=ON -D CMAKE_BUILD_TYPE:STRING=RELEASE ..
</pre>
</pre>
Pour ma configuration, cela a fonctionné. Les 2 lib OpenCL d'AMD sont détecté. Il est même possible que cela fonctionne sous Windows.
Pour ma configuration, cela a fonctionné. Les 2 lib OpenCL d'AMD sont détecté. Il est même possible que cela fonctionne sous Windows.
 +
 +
===Compilation Version 2.4.6.1===
 +
 +
Plus besoins de modifier les sources pour la détection des lib OpenCLAMDFFT et OpenCLAMDBLAS. Cela a été corrigé.<br><br>
 +
Par contre la détection de OpenMP lors du cmake ne se fait pas correctement: http://code.opencv.org/issues/3328 <br><br>
 +
solution de contournement: Remplacer les ligne 49 a 58 du fichier opencv-2.4.6.1/cmake/OpenCVFindLibsPerf.cmake<br>
 +
<pre>
 +
# --- OpenMP ---
 +
if(NOT HAVE_TBB AND NOT HAVE_CSTRIPES)
 +
  include (FindOpenMP)                                                  # --- from cmake version 2.6.3
 +
  if (OPENMP_FOUND)
 +
      set (HAVE_OPENMP TRUE)
 +
      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
 +
      set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
 +
  else()
 +
      set ( HAVE_OPENMP FALSE)
 +
  endif()
 +
else()
 +
set(HAVE_OPENMP 0)
 +
endif()
 +
</pre>
 +
<br><br>
 +
commande de lancement de cmake:<br>
 +
<pre>
 +
cmake -D BUILD_EXAMPLES:bool=ON -D WITH_OPENCL:bool=ON -D WITH_OPENCLAMDFFT:bool=ON -D WITH_OPENCLAMDBLAS:bool=ON -D WITH_QT:bool=ON -D WITH_OPENGL:bool=ON -D ENABLE_SSE:bool=ON -D ENABLE_SSE2:bool=ON -D ENABLE_SSE3:bool=ON -D ENABLE_SSE41:bool=ON -D ENABLE_SSE42:bool=ON -D WITH_TBB:bool=ON -D WITH_OPENMP:bool=ON -D CMAKE_BUILD_TYPE:STRING=RELEASE --debug-trycompile .. > ../$(date +%Y-%m-%d-%H-%M)_cmake.log 2>&1
 +
</pre>
==Utilisation==
==Utilisation==

Version actuelle en date du 21 octobre 2013 à 04:30

retour vers Developpement

Sommaire

OpenCV: Open Computer Vision Library

Presentation

http://opencv.org/
extrait wikipedia:

OpenCV (pour Open Computer Vision) est une bibliothèque graphique libre, initialement développée par Intel, spécialisée dans le traitement d'images en temps réel. La société de robotique Willow Garage assure le support de cette bibliothèque depuis 2008.

Cette bibliothèque est distribuée sous licence BSD.

Documentation


Compilation Version 2.4.3

 mkdir OpenCV-2.4.2/OpenCV.build/Release
 cmake -D  BUILD_EXAMPLES:bool=ON -D WITH_OPENCL:bool=ON -D WITH_QT:bool=ON -D WITH_OPENGL:bool=ON -D WITH_OPENCLAMDFFT:bool=OFF
-D WITH_OPENCLAMDBLAS:bool=OFF -D WITH_TBB:bool=ON -D CMAKE_BUILD_TYPE:string=Release -D CLAMDBLAS_INCLUDE_DIR:string=/usr/include/ATI/clAmdBlas
-D CLAMDBLAS_LIBRARIES:string=/usr/lib/fglrx/libclAmdBlas.so -D CLAMDFFT_INCLUDE_DIR:string=/usr/include/ATI/clAmdFft
-D CLAMDFFT_LIBRARIES:string=/usr/lib/fglrx/libclAmdFft -D ENABLE_SSE41:bool=ON -D ENABLE_SSE42:bool=ON ..

Voir le fichier OpenCV-2.4.3/CMakeList.txt pour les options de CMake.

A noter que je n'ai pas réussi, pour l'instant, a compiler OpenCV avec les libs libclAmdFft et clAmdFft d'AMD. Elles sont ici en OFF avec un message de cmake sur leurs include et lib.


Compilation Version 2.4.4

 mkdir OpenCV-2.4.5/Release
 cmake -D BUILD_EXAMPLES:bool=ON -D WITH_OPENCL:bool=ON -D WITH_OPENCLAMDFFT:bool=ON -D WITH_OPENCLAMDBLAS:bool=ON 
 -D WITH_QT:bool=ON -D WITH_OPENGL:bool=ON -D CLAMDBLAS_INCLUDE_DIR:string=/usr/include/ATI/clAmdBlas 
 -D CLAMDBLAS_LIBRARIES:string=/usr/lib/fglrx/libclAmdBlas.so -D CLAMDFFT_INCLUDE_DIR:string=/usr/include/ATI/clAmdFft 
 -D CLAMDFFT_LIBRARIES:string=/usr/lib/fglrx/libclAmdFft.Runtime.so -D CMAKE_BUILD_TYPE:STRING=RELEASE ..


Compilation Version 2.4.5

Carte graphique AMD: Pour la détection du SDK OpenCL d'AMD (AmdAppSDK) et des Lib OpenCL CLAmdFFT et CLAmdBLAS:
ajout des variables suivantes au fichier /etc/environement pour valoriser CLAMDFFT_PATH et CLAMDBLAS_PATH utilisé par cmake/OpenCVDetectOpenCL.cmake pour détecter FFT et BLAS d'AMD. N'oublier pas la déconnexion reconnexion pour la prise en compte des variables.

 AMDAPPSDKROOT="/opt/AMDAPP"
 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/opt/AMDAPP/lib/x86_64:/opt/AMDAPP/lib/x86:/opt/clAmdBlas-1.10.321/lib64:/opt/clAmdBlas-1.10.321/lib32:
 /opt/clAmdFft-1.10.321/lib64:/opt/clAmdFft-1.10.321/lib32"
 CLAMDFFT_PATH=/opt/clAmdFft-1.10.321
 CLAMDBLAS_PATH=/opt/clAmdBlas-1.10.321

Cependant ce n'est pas suffisant. Il y a des bugs dans le fichier cmake/OpenCVDetectOpenCL.cmake . j'ai ouverts un rapport a http://code.opencv.org/issues/2985 (nécessite de créer un compte)

Voici un patch:

--- OpenCVDetectOpenCL.cmake.origine	2013-04-05 11:00:20.000000000 +0200
+++ OpenCVDetectOpenCL.cmake	2013-04-24 23:31:21.124626032 +0200
@@ -42,11 +42,17 @@
   set(OPENCL_INCLUDE_DIRS ${OPENCL_INCLUDE_DIR})
   set(OPENCL_LIBRARIES    ${OPENCL_LIBRARY})
 
-  if (X86_64)
+if (WIN64)
     set(CLAMD_POSSIBLE_LIB_SUFFIXES lib64/import)
-  elseif (X86)
+elseif (WIN32)
     set(CLAMD_POSSIBLE_LIB_SUFFIXES lib32/import)
-  endif()
+endif()
+
+if (X86_64 AND UNIX )
+    set(CLAMD_POSSIBLE_LIB_SUFFIXES lib64)
+elseif (X86 AND UNIX)
+    set(CLAMD_POSSIBLE_LIB_SUFFIXES lib32)
+endif()
 
   if(WITH_OPENCLAMDFFT)
     find_path(CLAMDFFT_ROOT_DIR
@@ -78,7 +84,7 @@
   if(WITH_OPENCLAMDBLAS)
     find_path(CLAMDBLAS_ROOT_DIR
               NAMES include/clAmdBlas.h
-              PATHS ENV CLAMDFFT_PATH ENV ProgramFiles
+              PATHS ENV CLAMDBLAS_PATH ENV ProgramFiles
               PATH_SUFFIXES clAmdBlas AMD/clAmdBlas
               DOC "AMD FFT root directory"
               NO_DEFAULT_PATH)

Pour patcher, copier coller les lignes ci-dessus dans un fichier OpenCV-2.4.5/cmake/correction.patch. Puis mettez en place le patch par:

 cd OpenCV-2.4.5/cmake
 patch -p0 < correction.patch


On peut maintenant faire la préparation a la compilation avec cmake:

 mkdir OpenCV-2.4.5/Release
 cd OpenCV-2.4.5/Release
cmake -D BUILD_EXAMPLES:bool=ON -D WITH_OPENCL:bool=ON -D WITH_OPENCLAMDFFT:bool=ON -D WITH_OPENCLAMDBLAS:bool=ON -D WITH_QT:bool=ON 
-D WITH_OPENGL:bool=ON -D ENABLE_SSE:bool=ON -D ENABLE_SSE2:bool=ON -D ENABLE_SSE3:bool=ON -D ENABLE_SSE41:bool=ON
-D ENABLE_SSE42:bool=ON -D WITH_TBB:bool=ON -D CMAKE_BUILD_TYPE:STRING=RELEASE ..

Pour ma configuration, cela a fonctionné. Les 2 lib OpenCL d'AMD sont détecté. Il est même possible que cela fonctionne sous Windows.

Compilation Version 2.4.6.1

Plus besoins de modifier les sources pour la détection des lib OpenCLAMDFFT et OpenCLAMDBLAS. Cela a été corrigé.

Par contre la détection de OpenMP lors du cmake ne se fait pas correctement: http://code.opencv.org/issues/3328

solution de contournement: Remplacer les ligne 49 a 58 du fichier opencv-2.4.6.1/cmake/OpenCVFindLibsPerf.cmake

# --- OpenMP ---
if(NOT HAVE_TBB AND NOT HAVE_CSTRIPES)
  include (FindOpenMP)                                                   # --- from cmake version 2.6.3 
   if (OPENMP_FOUND)
      set (HAVE_OPENMP TRUE)
      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
      set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
   else()
      set ( HAVE_OPENMP FALSE)
   endif()
else()
set(HAVE_OPENMP 0)
endif()



commande de lancement de cmake:

cmake -D BUILD_EXAMPLES:bool=ON -D WITH_OPENCL:bool=ON -D WITH_OPENCLAMDFFT:bool=ON -D WITH_OPENCLAMDBLAS:bool=ON -D WITH_QT:bool=ON -D WITH_OPENGL:bool=ON -D ENABLE_SSE:bool=ON -D ENABLE_SSE2:bool=ON -D ENABLE_SSE3:bool=ON -D ENABLE_SSE41:bool=ON -D ENABLE_SSE42:bool=ON -D WITH_TBB:bool=ON -D WITH_OPENMP:bool=ON -D CMAKE_BUILD_TYPE:STRING=RELEASE --debug-trycompile .. > ../$(date +%Y-%m-%d-%H-%M)_cmake.log 2>&1

Utilisation



Outils personnels