OpenCV

From ArmadeusWiki
Revision as of 12:34, 5 February 2012 by SamuelM (Talk | contribs) (Update for armadeus-4.1 release)

Jump to: navigation, search

Page under construction... Construction.png Informations on this page are not guaranteed !!

Forewords

This page explains how to (cross-)compile OpenCV 2.1.0 or later for your APF-board.

Pre-requisite

The CMake infrastructure has been integrated in Buildroot since the BR release 2011.02.

The CMake infrastructure is available in armadeus SDK since the armadeus-4.1 release (since it is based on BR release 2011.05).

Note Note: Using elder armadeus SDK requires having CMake 2.6 or later installed on the host system.


Build OpenCV

Note Note: The tutorial hereafter (patch and OpenCV configuration) is for the OpenCV 2.1.0 release.

This may changes in newer OpenCV releases. Updates are welcome ;-)


  1. Setup the CMake toolchain file:
    1. Using armadeus-4.1 SDK or later (or git view): this file is generated by buildroot and is located in armadeus-4.1/buildroot/output/toolchainfile.cmake.
    2. Using armadeus-4.0 SDK or former: the toolchainfile.cmake must be manually edited.
  2. Create source and build directories
    mkdir -pv opencv-on-armadeus/{src,build}
    
  3. Grab the OpenCV source archive.
    cd opencv-on-armadeus/src && wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.1/OpenCV-2.1.0.tar.bz2 && tar xvvjf OpenCV-2.1.0.tar.bz2
    
  4. Here, you'll have to apply this patch to avoid compilation failed:
    patch -p0 < OpenCV-2.1.0.patch
    
  5. Run CMake (generate Makefiles)
    1. cd ~/opencv-on-armadeus/build && cmake -DCMAKE_TOOLCHAIN_FILE:PATH=/path/to/toolchainfile.cmake ../src/OpenCV-2.1.0
      
    2. It will certainly complain about unfound libraries and some other things, so adjust these things running:
      cmake-gui
      
  6. Compile OpenCV libraries
    VERBOSE=1 make
    


Note Note: cmake-gui
  • Click twice on Configure when you change something.
  • When configuring exit without any error, click on Generate to generate Makefiles.
  • If your configuration is too messy, reset it by deleting the cache (File/Delete Cache) or remove the CMakeCache.txt file in the build directory. Don't hesitate to do so if something (eg. paths) is wrong ;)
  • To see the cmake-command that corresponds to the configuration you have just set in cmake-gui: Tools/Show my changes


Available features (for armadeus-4.0 release or former)

CMake looks for all required tool in the path specified in toolchainfile.cmake; therefore, some options, targets, libraries, ... are not available:

  • Build:
    • Latex Doc  : Not available in Buildroot
    • New Python support  : Not available (require Python >=2.6, Buildroot provides Python 2.4)
    • Swing Python support : Not available (require Python >=2.6, Buildroot provides Python 2.4)
    • Octave support  : Not available in Buildroot
  • Python
    • Executable  : Not found (require Python >=2.6, Buildroot provides Python 2.4)
    • Include dirs.  : Found
    • Library  : Not found (require Python >=2.6, Buildroot provides Python 2.4)
  • With
    • V4L  : Disable it (Buildroot provides it, but linker failed)
  • OpenCV
    • 3rd party libs.  : You can enable it.


Note Note: You may need to enable some packages in your Armadeus configuration to get some libraries (libjpeg, libpng and libtiff) found by CMake.


Run OpenCV applications on your APF-board

  1. In the build directory, you should find a bin and a lib sub-directories. Copy them (at least the lib directory) on your target.
  2. export LD_LIBRARY_PATH=/path/to/the/OpenCVlibdir
    
  3. Run your application. You can try cvtest (some tests may fail because of missing resources), it will take a while... a long while ;)

See also

Appendices

OpenCV-2.1.0.patch

--- OpenCV-2.1.0/3rdparty/flann/constants.h.origin	2010-06-08 01:14:22.171416516 +0200
+++ OpenCV-2.1.0/3rdparty/flann/constants.h	2010-06-08 01:15:06.912417891 +0200
@@ -41,7 +41,7 @@ enum flann_algorithm_t {
 	KMEANS = 2,
 	COMPOSITE = 3,
 	SAVED = 254,
-	AUTOTUNED = 255,
+	AUTOTUNED = 255
 };
 
 enum flann_centers_init_t {
--- OpenCV-2.1.0/3rdparty/flann/flann.h.origin	2010-06-08 01:14:32.588443815 +0200
+++ OpenCV-2.1.0/3rdparty/flann/flann.h	2010-06-08 01:15:06.912417891 +0200
@@ -267,7 +267,7 @@ LIBSPEC int flann_compute_cluster_center
 
 
 #ifdef __cplusplus
-};
+}
 
 
 #include "flann.hpp"
--- OpenCV-2.1.0/3rdparty/include/flann/constants.h.origin	2010-06-08 01:14:54.503416676 +0200
+++ OpenCV-2.1.0/3rdparty/include/flann/constants.h	2010-06-08 01:15:06.912417891 +0200
@@ -41,7 +41,7 @@ enum flann_algorithm_t {
 	KMEANS = 2,
 	COMPOSITE = 3,
 	SAVED = 254,
-	AUTOTUNED = 255,
+	AUTOTUNED = 255
 };
 
 enum flann_centers_init_t {
--- OpenCV-2.1.0/3rdparty/include/flann/flann.h.origin	2010-06-08 01:14:44.672417690 +0200
+++ OpenCV-2.1.0/3rdparty/include/flann/flann.h	2010-06-08 01:15:06.912417891 +0200
@@ -267,7 +267,7 @@ LIBSPEC int flann_compute_cluster_center
 
 
 #ifdef __cplusplus
-};
+}
 
 
 #include "flann.hpp"