OpenCVをsuzakuで使う

出典: Wikimura

OpenCVをSUZAKUで実行するためのクロス開発環境の構築と,実行時の注意点などをまとめます.

■キーワード : Suzaku, OpenCV, PowerPC, Linux, クロスコンパイル


目次

必要なもの

  • PC
  • SUZAKU-V (sz310)
  • VMware Player
  • ATDE[1]
    • VMware上で動作する開発用仮想linux環境
  • Linux Kernel[2]
  • Atmark-dist[3]
  • OpenCV source


バージョン情報

  • PC
    • WindowsXP SP3
  • ATDE
    • atde2-20090403.zip
  • Linux Kernel
    • linux-2.6.18-at11.tar.gz
  • Atmark-dist
    • atmark-dist-20090318.tar.gz
  • OpenCV
    • OpenCV-2.0.0.tar.bz2
    • opencv-1.1pre1.tar.gz


手順

ATDEによるクロス開発環境の準備

ATDEを実行し,Linuxを起動する.以下ではユーザー名:atmarkでログインし,ホームディレクトリ:/home/atmark/以下で作業を進めるとこととする.
atmark-dist-20090318.tar.gzとlinux-2.6.18-at11.tar.gzをそれぞれ,/home/atmark/atmark-dist-20090318/と/home/linux-2.6.18-at11/として展開する.
ディレクトリatmark-dist-20090318に移動し,linux-2.6.xという名称のlinuxlinux-2.6.18-at11へのシンボリックリンクを作成.

ln -s /home/atmark/linux-2.6.18-at11 ./linux-2.6.x

Linuxをビルドする.ビルドの方法等についてはSUZAKUソフトウェアマニュアルを参照すること.

make menuconfig
make dep
make

ビルドが正常に完了すれば,SUZAKU用Linuxクロス開発環境ができあがり.

OpenCVのビルド・インストール (Ver.2.0.0)

OpenCV-2.0.0.tar.bz2を/home/atmark/OpenCV-2.0.0に展開する.
次にOpenCVのビルドに必要なcmakeをインストールする.

$ su
# apt-get install cmake
# exit

cmakeを実行する前に,環境変数をpowerpc-linux向けに変更する.

$ export CC=powerpc-linux-gcc
$ export CXX=powerpc-linux-g++
$ export LD=powerpc-linux-ld
$ export AR=powerpc-linux-ar
$ export AS=powerpc-linux-as
$ export RANLIB=powerpc-linux-ranlib
$ export STRIP=powerpc-linux-strip
$ export CPP=powerpc-linux-cpp

Makefileや,ビルドの際に必要な各種ファイルを作成するため,OpenCV-2.0.0/releaseというディレクトリを作成する.

$ cd /home/atmark/OpenCV-2.0.0
$ mkdir release

releaseに移動し,cmakeを実行する.-iオプションはインタラクティブで各種設定を行うことを示す.
../はディレクトリOpenCV-2.0.0を指す.

$ cd release
$ cmake -i -D CMAKE_BUILD_TYPE=RELEASE ../
atmark@atde:~/suzaku2/OpenCV-2.0.0/release$ cmake -i -D CMAKE_BUILD_TYPE=RELEASE ../
Would you like to see advanced options? [No]:YES
Please wait while cmake processes CMakeLists.txt files....



Variable Name: BUILD_EXAMPLES
Description: Build all examples
Current Value: OFF
New Value (Enter to keep current value): OFF

Variable Name: BUILD_LATEX_DOCS
Description: Build LaTeX OpenCV Documentation
Current Value: OFF
New Value (Enter to keep current value): OFF

Variable Name: BUILD_NEW_PYTHON_SUPPORT
Description: Build with Python support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: BUILD_OCTAVE_SUPPORT
Description: Build with Octave support
Current Value: OFF
New Value (Enter to keep current value): OFF

Variable Name: BUILD_PACKAGE
Description: Build a installer with the SDK
Current Value: OFF
New Value (Enter to keep current value): OFF

Variable Name: BUILD_SWIG_PYTHON_SUPPORT
Description: Build with older SWIG-based Python support
Current Value: OFF
New Value (Enter to keep current value): OFF

Variable Name: BUILD_TESTS
Description: Build tests
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: CMAKE_AR
Description: Path to a program.
Current Value: /usr/bin/ar
New Value (Enter to keep current value):

Variable Name: CMAKE_BACKWARDS_COMPATIBILITY
Description: For backwards compatibility, what version of CMake commands and syntax should this version of CMake allow.
Current Value: 2.4
New Value (Enter to keep current value):

Variable Name: CMAKE_BUILD_TYPE
Description: Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
Current Value: RELEASE
New Value (Enter to keep current value):

Variable Name: CMAKE_COLOR_MAKEFILE
Description: Enable/Disable color output during build.
Current Value: ON
New Value (Enter to keep current value): ON

Variable Name: CMAKE_CONFIGURATION_TYPES
Description: Configs
Current Value: Debug;Release
New Value (Enter to keep current value):

Variable Name: CMAKE_CXX_COMPILER
Description: CXX compiler.
Current Value: /usr/bin/powerpc-linux-g++
New Value (Enter to keep current value):

Variable Name: CMAKE_CXX_FLAGS
Description: Flags used by the compiler during all build types.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_CXX_FLAGS_DEBUG
Description: Flags used by the compiler during debug builds.
Current Value: -g
New Value (Enter to keep current value):

Variable Name: CMAKE_CXX_FLAGS_RELEASE
Description: Flags used by the compiler during release builds (/MD /Ob1 /Oi /Ot /Oy /Gs will produce slightly less optimized but smaller files).
Current Value: -O3 -DNDEBUG
New Value (Enter to keep current value):

Variable Name: CMAKE_C_COMPILER
Description: C compiler.
Current Value: /usr/bin/powerpc-linux-gcc
New Value (Enter to keep current value):

Variable Name: CMAKE_C_FLAGS
Description: Flags for C compiler.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_C_FLAGS_DEBUG
Description: Flags used by the compiler during debug builds.
Current Value: -g
New Value (Enter to keep current value):

Variable Name: CMAKE_C_FLAGS_RELEASE
Description: Flags used by the compiler during release builds (/MD /Ob1 /Oi /Ot /Oy /Gs will produce slightly less optimized but smaller files).
Current Value: -O3 -DNDEBUG
New Value (Enter to keep current value):

Variable Name: CMAKE_EXE_LINKER_FLAGS
Description: Flags used by the linker.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_EXE_LINKER_FLAGS_DEBUG
Description: Flags used by the linker during debug builds.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_EXE_LINKER_FLAGS_RELEASE
Description: Flags used by the linker during release builds.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_INSTALL_PREFIX
Description: Install path prefix, prepended onto install directories.
Current Value: /usr/local
New Value (Enter to keep current value): /home/atmark/opencv/release

Variable Name: CMAKE_MAKE_PROGRAM
Description: Path to a program.
Current Value: /usr/bin/make
New Value (Enter to keep current value):

Variable Name: CMAKE_MODULE_LINKER_FLAGS
Description: Flags used by the linker during the creation of modules.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_MODULE_LINKER_FLAGS_DEBUG
Description: Flags used by the linker during debug builds.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_MODULE_LINKER_FLAGS_RELEASE
Description: Flags used by the linker during release builds.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_RANLIB
Description: Path to a program.
Current Value: /usr/bin/ranlib
New Value (Enter to keep current value):

Variable Name: CMAKE_SHARED_LINKER_FLAGS
Description: Flags used by the linker during the creation of dll's.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_SHARED_LINKER_FLAGS_DEBUG
Description: Flags used by the linker during debug builds.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_SHARED_LINKER_FLAGS_RELEASE
Description: Flags used by the linker during release builds.
Current Value:
New Value (Enter to keep current value):

Variable Name: CMAKE_SKIP_RPATH
Description: If set, runtime paths are not added when using shared libraries.
Current Value: NO
New Value (Enter to keep current value):

Variable Name: CMAKE_USE_RELATIVE_PATHS
Description: If true, cmake will use relative paths in makefiles and projects.
Current Value: OFF
New Value (Enter to keep current value):

Variable Name: CMAKE_VERBOSE_MAKEFILE
Description: If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make.  This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.
Current Value: FALSE
New Value (Enter to keep current value):

Variable Name: ENABLE_OPENMP
Description: (none)
Current Value: OFF
New Value (Enter to keep current value):

Variable Name: ENABLE_PROFILING
Description: Enable profiling in the GCC compiler (Add flags: -g -pg)
Current Value: OFF
New Value (Enter to keep current value):

Variable Name: EXECUTABLE_OUTPUT_PATH
Description: Output directory for applications
Current Value: /home/atmark/OpenCV-2.0.0/release/bin
New Value (Enter to keep current value): /home/atmark/opencv/release/bin

Variable Name: INSTALL_C_EXAMPLES
Description: Install C examples
Current Value: OFF
New Value (Enter to keep current value):

Variable Name: INSTALL_OCTAVE_EXAMPLES
Description: Install Octave examples
Current Value: OFF
New Value (Enter to keep current value):

Variable Name: INSTALL_PYTHON_EXAMPLES
Description: Install Python examples
Current Value: OFF
New Value (Enter to keep current value):

Variable Name: IPP_PATH
Description: The path to IPP dynamic libraries
Current Value: IPP_PATH-NOTFOUND
New Value (Enter to keep current value):

Variable Name: JASPER_INCLUDE_DIR
Description: Path to a file.
Current Value: JASPER_INCLUDE_DIR-NOTFOUND
New Value (Enter to keep current value):

Variable Name: JASPER_LIBRARY
Description: Path to a library.
Current Value: JASPER_LIBRARY-NOTFOUND
New Value (Enter to keep current value):

Variable Name: JPEG_INCLUDE_DIR
Description: Path to a file.
Current Value: JPEG_INCLUDE_DIR-NOTFOUND
New Value (Enter to keep current value):

Variable Name: JPEG_LIBRARY
Description: Path to a library.
Current Value: JPEG_LIBRARY-NOTFOUND
New Value (Enter to keep current value): /usr/powerpc-linux-gnu/lib/libjpeg.so

Variable Name: LIBRARY_OUTPUT_PATH
Description: Output directory for libraries
Current Value: /home/atmark/OpenCV-2.0.0/release/lib
New Value (Enter to keep current value): /home/atmark/opencv/release/lib

Variable Name: OPENCV_BUILD_3RDPARTY_LIBS
Description: Build 3rd party libraries
Current Value: FALSE
New Value (Enter to keep current value):

Variable Name: OPENCV_CONFIG_FILE_INCLUDE_DIR
Description: Where to create the platform-dependant cvconfig.h
Current Value: /home/atmark/OpenCV-2.0.0/release
New Value (Enter to keep current value): /home/atmark/opencv/release/

Variable Name: OPENCV_EXTRA_C_FLAGS
Description: Extra compiler options
Current Value:
New Value (Enter to keep current value):

Variable Name: OPENCV_EXTRA_C_FLAGS_DEBUG
Description: Extra compiler options for Debug build
Current Value:
New Value (Enter to keep current value):

Variable Name: OPENCV_EXTRA_C_FLAGS_RELEASE
Description: Extra compiler options for Release build
Current Value:
New Value (Enter to keep current value):

Variable Name: OPENCV_EXTRA_EXE_LINKER_FLAGS
Description: Extra linker flags
Current Value:
New Value (Enter to keep current value):

Variable Name: OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG
Description: Extra linker flags for Debug build
Current Value:
New Value (Enter to keep current value):

Variable Name: OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE
Description: Extra linker flags for Release build
Current Value:
New Value (Enter to keep current value):

Variable Name: OPENCV_WARNINGS_ARE_ERRORS
Description: Treat warnings as errors
Current Value: OFF
New Value (Enter to keep current value):

Variable Name: OPENCV_WHOLE_PROGRAM_OPTIMIZATION
Description: Flags for whole program optimization.
Current Value: OFF
New Value (Enter to keep current value):

Variable Name: PKG_CONFIG_EXECUTABLE
Description: pkg-config executable
Current Value: /usr/bin/pkg-config
New Value (Enter to keep current value):

Variable Name: PNG_LIBRARY
Description: Path to a library.
Current Value: /usr/lib/libpng.so
New Value (Enter to keep current value): /usr/powerpc-linux-gnu/lib/libpng.so

Variable Name: PNG_PNG_INCLUDE_DIR
Description: Path to a file.
Current Value: /usr/include
New Value (Enter to keep current value): /usr/powerpc-linux-gnu/include

Variable Name: PYTHON_EXECUTABLE
Description: Path to a program.
Current Value: /usr/bin/python2.4
New Value (Enter to keep current value):

Variable Name: PYTHON_INCLUDE_PATH
Description: Path to a file.
Current Value: /usr/include/python2.4
New Value (Enter to keep current value):

Variable Name: PYTHON_LIBRARY
Description: Path to a library.
Current Value: /usr/lib/python2.4/config/libpython2.4.so
New Value (Enter to keep current value):

Variable Name: SVNVERSION_PATH
Description: Path to a program.
Current Value: SVNVERSION_PATH-NOTFOUND
New Value (Enter to keep current value):

Variable Name: TIFF_INCLUDE_DIR
Description: Path to a file.
Current Value: TIFF_INCLUDE_DIR-NOTFOUND
New Value (Enter to keep current value):

Variable Name: TIFF_LIBRARY
Description: Path to a library.
Current Value: TIFF_LIBRARY-NOTFOUND
New Value (Enter to keep current value):

Variable Name: USE_IPP
Description: Use IPP when available
Current Value:
New Value (Enter to keep current value):

Variable Name: USE_OMIT_FRAME_POINTER
Description: Enable -fomit-frame-pointer for GCC
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_1394
Description: Include IEEE1394 support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_FFMPEG
Description: Include FFMPEG support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_GSTREAMER
Description: Include Gstreamer support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_GTK
Description: Include GTK support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_JASPER
Description: Include JPEG2K support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_JPEG
Description: Include JPEG support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_PNG
Description: Include PNG support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_TIFF
Description: Include TIFF support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_UNICAP
Description: Include Unicap support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_V4L
Description: Include Video 4 Linux support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: WITH_XINE
Description: Include Xine support
Current Value: ON
New Value (Enter to keep current value): OFF

Variable Name: ZLIB_INCLUDE_DIR
Description: Path to a file.
Current Value: /usr/include
New Value (Enter to keep current value): /usr/powerpc-linux-gnu/include

Variable Name: ZLIB_LIBRARY
Description: Path to a library.
Current Value: /usr/lib/libz.so
New Value (Enter to keep current value): /usr/powerpc-linux-gnu/lib/libz.so

Please wait while cmake processes CMakeLists.txt files....


makeの実行.

$ make


make installの実行.

$ su
# make install
# exit

make install 実行結果

root@atde:/home/atmark/OpenCV-2.0.0/release# make install
[  0%] Built target cxcore_pch_dephelp
[  1%] Built target pch_Generate_cxcore
[ 56%] Built target opencv_lapack
[ 59%] Built target zlib
[ 60%] Built target flann
[ 63%] Built target cxcore
[ 63%] Built target cv_pch_dephelp
[ 63%] Built target pch_Generate_cv
[ 76%] Built target cv
[ 76%] Built target cvaux_pch_dephelp
[ 77%] Built target pch_Generate_cvaux
[ 77%] Built target highgui_pch_dephelp
[ 77%] Built target pch_Generate_highgui
[ 81%] Built target highgui
[ 82%] Built target ml_pch_dephelp
[ 82%] Built target pch_Generate_ml
[ 84%] Built target ml
[ 98%] Built target cvaux
[100%] Built target cvhaartraining
[100%] Built target createsamples
[100%] Built target haartraining
[101%] Built target performance
[102%] Built target traincascade
Linking CXX shared library CMakeFiles/CMakeRelink.dir/libcxcore.so
Linking CXX shared library CMakeFiles/CMakeRelink.dir/libcv.so
Linking CXX shared library CMakeFiles/CMakeRelink.dir/libcvaux.so
Linking CXX shared library CMakeFiles/CMakeRelink.dir/libml.so
Linking CXX shared library CMakeFiles/CMakeRelink.dir/libhighgui.so
Linking CXX executable CMakeFiles/CMakeRelink.dir/opencv_createsamples
Linking CXX executable CMakeFiles/CMakeRelink.dir/opencv_haartraining
Linking CXX executable CMakeFiles/CMakeRelink.dir/opencv_performance
Linking CXX executable CMakeFiles/CMakeRelink.dir/opencv_traincascade
Install the project...
-- Install configuration: "Release"
-- Installing /home/atmark/opencv/release/share/opencv/OpenCVConfig.cmake
-- Installing /home/atmark/opencv/release/lib/pkgconfig/opencv.pc
-- Installing /home/atmark/opencv/release/lib/libcxcore.so.2.0.0
-- Installing /home/atmark/opencv/release/include/opencv/cxcore.h
-- Installing /home/atmark/opencv/release/include/opencv/cxcore.hpp
-- Installing /home/atmark/opencv/release/include/opencv/cxerror.h
-- Installing /home/atmark/opencv/release/include/opencv/cxmat.hpp
-- Installing /home/atmark/opencv/release/include/opencv/cxmisc.h
-- Installing /home/atmark/opencv/release/include/opencv/cxoperations.hpp
-- Installing /home/atmark/opencv/release/include/opencv/cxtypes.h
-- Installing /home/atmark/opencv/release/include/opencv/cvver.h
-- Installing /home/atmark/opencv/release/include/opencv/cvwimage.h
-- Installing /home/atmark/opencv/release/include/opencv/cxflann.h
-- Installing /home/atmark/opencv/release/lib/libcv.so.2.0.0
-- Installing /home/atmark/opencv/release/include/opencv/cv.h
-- Installing /home/atmark/opencv/release/include/opencv/cv.hpp
-- Installing /home/atmark/opencv/release/include/opencv/cvcompat.h
-- Installing /home/atmark/opencv/release/include/opencv/cvtypes.h
-- Installing /home/atmark/opencv/release/lib/libcvaux.so.2.0.0
-- Installing /home/atmark/opencv/release/include/opencv/cvaux.h
-- Installing /home/atmark/opencv/release/include/opencv/cvaux.hpp
-- Installing /home/atmark/opencv/release/include/opencv/cvvidsurv.hpp
-- Installing /home/atmark/opencv/release/lib/libml.so.2.0.0
-- Installing /home/atmark/opencv/release/include/opencv/ml.h
-- Installing /home/atmark/opencv/release/lib/libhighgui.so.2.0.0
-- Installing /home/atmark/opencv/release/include/opencv/highgui.h
-- Installing /home/atmark/opencv/release/include/opencv/highgui.hpp
-- Installing /home/atmark/opencv/release/bin/opencv_haartraining
-- Installing /home/atmark/opencv/release/bin/opencv_createsamples
-- Installing /home/atmark/opencv/release/bin/opencv_performance
-- Installing /home/atmark/opencv/release/bin/opencv_traincascade
-- Installing /home/atmark/opencv/release/share/opencv/doc/index.htm
-- Installing /home/atmark/opencv/release/share/opencv/doc/haartraining.htm
-- Installing /home/atmark/opencv/release/share/opencv/doc/ChangeLog.htm
-- Installing /home/atmark/opencv/release/share/opencv/doc/CMakeLists.txt
-- Installing /home/atmark/opencv/release/share/opencv/doc/packaging.txt
-- Installing /home/atmark/opencv/release/share/opencv/doc/license.txt
-- Installing /home/atmark/opencv/release/share/opencv/doc/python.txt
-- Installing /home/atmark/opencv/release/share/opencv/doc/latex_readme.txt
-- Installing /home/atmark/opencv/release/share/opencv/doc/opencv.jpg
-- Installing /home/atmark/opencv/release/share/opencv/doc/opencv-logo.png
-- Installing /home/atmark/opencv/release/share/opencv/doc/opencv-logo2.png
-- Installing /home/atmark/opencv/release/share/opencv/doc/opencv.pdf
-- Installing /home/atmark/opencv/release/share/opencv/doc/pattern.pdf
-- Installing /home/atmark/opencv/release/share/opencv/doc/papers/algo_tracking.pdf
-- Installing /home/atmark/opencv/release/share/opencv/doc/papers/camshift.pdf
-- Installing /home/atmark/opencv/release/share/opencv/doc/papers/avbpa99.ps
-- Installing /home/atmark/opencv/release/share/opencv/doc/vidsurv/TestSeq.doc
-- Installing /home/atmark/opencv/release/share/opencv/doc/vidsurv/Blob_Tracking_Modules.doc
-- Installing /home/atmark/opencv/release/share/opencv/doc/vidsurv/Blob_Tracking_Tests.doc
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_fullbody.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_upperbody.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_lefteye.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_lefteye_2splits.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_righteye_2splits.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_eyepair_big.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_frontalface_default.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_mouth.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_frontalface_alt.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_upperbody.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_profileface.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_eye_tree_eyeglasses.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_righteye.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_lowerbody.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_nose.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_eye.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_frontalface_alt_tree.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml
-- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_eyepair_small.xml
-- Installing /home/atmark/opencv/release/share/opencv/lbpcascades/lbpcascade_frontalface.xml


以上で,OpenCVのインストールは完了.


OpenCVを使用したアプリケーションのビルド (Ver.2.0.0)

クロスコンパイル環境においては,コンパイルオプションが多岐にわたるため,Makefileにしている. 基本はSUZAKUのMakefileを流用している.

############################################################
## Makefile for OpenCV on SUZAKU
## Akira MIYASAKA / Kimura Laboratory, TUS (kimura-lab.net)
## ROOTDIR : Directory of atmark-dist
## OPENCV_DIR : Install Directory of OpenCV for PowerPC
############################################################


ROOTDIR=/home/atmark/atmark-dist-20090318
OPENCV_DIR=/home/atmark/opencv/release/bin
OPENCV_LIB_OPT= -lcxcore -lcv -lhighgui -lcvaux -lml


EXEC = sample3
OBJS = sample3.o



ROMFSDIR  = $(ROOTDIR)/romfs
ROMFSINST = romfs-inst.sh
PATH      := $(PATH):$(ROOTDIR)/tools

UCLINUX_BUILD_USER = 1
include $(ROOTDIR)/.config
LIBCDIR = $(CONFIG_LIBCDIR)
include $(ROOTDIR)/config.arch



all: $(EXEC)

$(EXEC): $(OBJS)
	$(CXX) $(LDFLAGS) -o  $@ $(OBJS) $(LDLIBS) -lrt -L$(OPENCV_DIR)/lib $(OPENCV_LIB_OPT)

clean:
	-rm -f $(EXEC) *.elf *.gdb *.o

romfs:
	$(ROMFSINST) /bin/$(EXEC)

%.o: %.cpp
	$(CXX) -c $(CFLAGS) -o $@ $< -lrt -I$(OPENCV_DIR)/include/opencv/

SUZAKUへのライブラリ追加

SUZAKU上のROMファイルシステムは,atmark-dist-20090318/romfs/以下をイメージ化することで構築されている. そこで,SUZAKU上に任意のファイルを追加するには,atmark-dist-20090318/romfs/以下にファイルを追加した後,atmark-dist-20090318のディレクトリ内でmake imageを実行することで,atmark-dist-20090318/images/内にimage.binが生成される.

OpenCVを使用したプログラムをSUZAKU上で実行するには,OpenCVのライブラリが必要になるため,atmark-dist-20090318/romfs/lib/以下に,OpenCVのライブラリ及び,それらのライブラリが必要とするライブラリを追加する必要がある.

しかし,それらのライブラリを単純に追加すると,SUZAKUのフラッシュメモリから溢れてしまう.

  • カーネルイメージ最大 : 6.81MB

そこで,追加する必要のあるライブラリはUZAKU起動後に/tmp/以下にLAN経由でダウンロードし,この/tmp/以下のライブラリに対するシンボリックリンクのみをatmark-dist-20090318/romfs/lib/に追加することとした.
この方法だと,LAN側にライブラリを保持するサーバーが必要になるため,スタンドアロンで動かすことができない.そこで,実際のシステムに組み込む際はSUZAKUにSDカードを搭載する.

  • 必要なOpenCVライブラリ
    • libcv.so.2.0
      • ~/opencv/release/lib/
    • libcvaux.so.2.0
      • ~/opencv/release/lib/
    • libcxcore.so.2.0
      • ~/opencv/release/lib/
    • libhighgui.so.2.0
      • ~/opencv/release/lib/
  • その他のライブラリ
    • libdl.so.2
      • /usr/powerpc-linux-gnu/lib/libdl.so.2
    • libm.so.6
      • /usr/powerpc-linux-gnu/lib/libm.so.6
    • libpthread.so.0
      • /usr/powerpc-linux-gnu/lib/libpthread.so.0
    • librt.so.1
      • /usr/powerpc-linux-gnu/lib/librt.so.1
    • libstdc++.so.6
      • /usr/powerpc-linux-gnu/lib/libstdc++.so.6


$ cd /home/atmark/atmark-dist-20090318/romfs/lib/
$ ln -s ../tmp/lib/libcv.so.2.0 ./libcv.so.2.0
$ ln -s ../tmp/lib/libcvaux.so.2.0 ./libcvaux.so.2.0
$ ln -s ../tmp/lib/libcxcore.so.2.0 ./libcxcore.so.2.0
$ ln -s ../tmp/lib/libhighgui.so.2.0 ./libhighgui.so.2.0
$ ln -s ../tmp/lib/libml.so.2.0 ./libml.so.2.0

$ ln -s ../tmp/lib/libdl.so.2 ./libdl.so.2
$ ln -s ../tmp/lib/libm.so.6 ./libm.so.6
$ ln -s ../tmp/lib/libpthread.so.0 ./libpthread.so.0
$ ln -s ../tmp/lib/librt.so.1 ./librt.so.1
$ ln -s ../tmp/lib/libstdc++.so.6 ./libstdc++.so.6

起動時にSUZAKU側でライブラリをダウンロードする必要がある. スクリプト化して/etc/rc.d/以下にSで始まるスクリプトファイルを置く.

これと併せて,SUZAKUのカーネルビルドオプションでwgetを追加して,スクリプトからwgetを使えるようにしなくてはならない. 起動スクリプトはパスが通っていないため,フルパス指定しなければならない.例:wgetだったら/usr/bin/wgetみたいな感じ.


イメージ化する上で必要な作業が全て終わったらmake imageを実行.



SUZAKUでの実行

SUZAKUのカーネルイメージを書き換える. 必要なライブラリの取得をスクリプト化してある場合は,そのままプログラムを実行できるはず.

まだライブラリを/tmp/lib以下にダウンロードしていない場合は,PCなどからftp経由でSUZAKUにアクセスして,/tmp/lib以下に必要なファイルをputする. そして実行.


以上できっとうまくいくはずです.


OpenCVのビルド・インストール (Ver.1.1.0)

opencv-1.1pre1.tar.gzを/home/atmark/OpenCV-1.1.0に展開する.
OpenCV-1.1.0にreleaseというディレクトリを作り,そこにインストールする.

$ mkdir release

./configureを実行する前に,環境変数をpowerpc-linux向けに変更する.

$ export CC=powerpc-linux-gcc
$ export CXX=powerpc-linux-g++
$ export LD=powerpc-linux-ld
$ export AR=powerpc-linux-ar
$ export AS=powerpc-linux-as
$ export RANLIB=powerpc-linux-ranlib
$ export STRIP=powerpc-linux-strip
$ export CPP=powerpc-linux-cpp


$ ./configure --prefix=/home/miyasaka/suzaku/OpenCV-1.1.0/release --host=powerpc-linux --enable-apps=no --enable-sse2=no --with-gtk=no --with-gthread=no --with-v4l=no  --with-python=no
個人用ツール