Difference between revisions of "OpenCV"

From ArmadeusWiki
Jump to: navigation, search
(Build OpenCV)
(Update for armadeus-4.1 release)
Line 1: Line 1:
 
{{Under_Construction}}
 
{{Under_Construction}}
 
== Forewords ==
 
== Forewords ==
This page explains how to (cross-)compile [http://opencv.willowgarage.com/wiki OpenCV 2.1.0] for your APF-board.
+
This page explains how to (cross-)compile [http://opencv.willowgarage.com/wiki OpenCV] 2.1.0 or later for your APF-board.
  
 
== Pre-requisite ==
 
== Pre-requisite ==
You need to have [[CMake]] >=2.6 installed on your system.
+
The CMake infrastructure has been integrated in Buildroot since the [http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.02 BR release 2011.02].
 +
 
 +
The CMake infrastructure is available in armadeus SDK since the
 +
[http://armadeus.git.sourceforge.net/git/gitweb.cgi?p=armadeus/armadeus;a=blob;f=ChangeLog;hb=cbc69e2606aeb8ad56701b3191e9632dc8358653 armadeus-4.1 release] (since it is based on BR release 2011.05).
 +
 
 +
{{Note|Using elder armadeus SDK requires having [[CMake]] 2.6 or later installed on the host system.}}
  
 
== Build OpenCV ==
 
== Build OpenCV ==
# Edit your [[CMake#The_toolchain_file| toolchain.cmake file]]
+
 
 +
{{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 ;-)
 +
}}
 +
 
 +
# Setup the CMake toolchain file:
 +
## '''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''.
 +
## '''Using armadeus-4.0 SDK or former:''' the [[CMake#The_toolchain_file| toolchainfile.cmake]] must be manually edited.
 
# Create source and build directories <source lang="bash">
 
# Create source and build directories <source lang="bash">
 
mkdir -pv opencv-on-armadeus/{src,build}
 
mkdir -pv opencv-on-armadeus/{src,build}
 
</source>
 
</source>
# Grab the source archive <source lang="bash">
+
# Grab the OpenCV source archive.<source lang="bash">
 
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
 
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
 
</source>
 
</source>
Line 19: Line 32:
 
# Run CMake (generate Makefiles)
 
# Run CMake (generate Makefiles)
 
##  <source lang="bash">
 
##  <source lang="bash">
cd ~/opencv-on-armadeus/build && cmake -DCMAKE_TOOLCHAIN_FILE:PATH=/path/to/toolchain.cmake ../src/OpenCV-2.1.0
+
cd ~/opencv-on-armadeus/build && cmake -DCMAKE_TOOLCHAIN_FILE:PATH=/path/to/toolchainfile.cmake ../src/OpenCV-2.1.0
 
</source>
 
</source>
 
##It will certainly complain about unfound libraries and some other things, so adjust these things running:<source lang="bash">
 
##It will certainly complain about unfound libraries and some other things, so adjust these things running:<source lang="bash">
Line 38: Line 51:
  
  
=== Available features ===
+
=== Available features (for armadeus-4.0 release or former) ===
CMake looks for all required tool in the path specified in [[CMake#The_toolchain_file| toolchain.cmake file]] toolchain.cmake file; therefore, some options, targets, libraries, ... are not available:
+
CMake looks for all required tool in the path specified in [[CMake#The_toolchain_file| toolchainfile.cmake]]; therefore, some options, targets, libraries, ... are not available:
  
 
* Build:
 
* Build:

Revision as of 11:34, 5 February 2012

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"