かんたんに構築できると思ったら少しハマってしまったこと。
リモートデバッグ環境構築はこちら
OpenCVのBuildはここをご参考にさせていただきました。
リモートデバッグするために必要な項目を載せています。
環境
- Host : macOS Sierra
- VM : Ubuntu Gnome 16.04 LTS 32bit
- Target : Raspberry Pi
1. 依存ライブラリのインストール
1.1 リポジトリアップデート
sudo apt-get update
1.2 Build 用
sudo apt-get install build-essential cmake pkg-config
1.3 OpenGL 用
sudo apt-get install mesa-utils
1.4 画像関連
sudo apt-get install libjpeg-dev \
libtiff5-dev \
libpng12-dev \
libjasper-dev \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
libv4l-dev \
libxvidcore-dev \
libx264-dev
libgtk2.0-dev \
1.5 高速化処理
sudo apt-get install libatlas-base-dev gfortran libeigen3-dev
高速化する手段はまだまだあるらしく、現在調査中。。
1.6 ドライバ
sudo apt-get install libv4l-dev
ちなみに V4L1はCMAKEの結果をみると動作しない模様 (未確認ですが)
V4L2で動作するWebカメラを選びましょう。
現在はLogicool C270を使っています
2. OpenCVのダウンロード
OpenCVと拡張モジュールをダウンロードします
mkdir opencv
cd opencv
wget -O opencv-3.1.0.zip https://github.com/opencv/opencv/archive/3.1.0.zip
wget -O opencv_contrib-3.1.0.zip https://github.com/opencv/opencv_contrib/archive/3.1.0.zip
unzip opencv-3.1.o.zip
unzip opencv_contrib-3.1.0.zip
opencv_contrib は必要でない人もいると思うので、各自判断して下さい。
CMAKEをするときにcontribオプションの説明を載せておきます。
3. Build環境の構築
CMAKEをしたいところですが、makeをするコンパイラを設定する必要があります。
aptにビルドするためのARMコンパイラがあります。
c言語とc++言語用です。
sudo apt-get install g++-arm-linux-gnueabihf
sudo apt-get install gcc-arm-linux-gnueabihf
次にtoolchain.cmakeファイルの修正を行います。
今回はARM用のビルドを実施しますので以下のToolchainの修正をして下さい。
sudo vi /opencv-3.1.0/platforms/linux/arm-gnueabi.toolchain.cmake
find_program(CMAKE_C_COMPILER NAMES arm-linux-gnueabihf-gcc)
find_program(CMAKE_CXX_COMPILER NAMES arm-linux-gnueabihf-g++)
次にBuildするフォルダの作成を行います。
mkdir build
cd build
4. cmakeからinstallまで
cmake を実行します。
今回の設定は
高速化 NEON TBB の有効化
QTはOFF
toolchainをARM用に指定
contribを有効
zlibのエラー対策でARのバイナリを指定します
//2017/05/14 修正 toolchainの指定間違え修正
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_TOOLCHAIN_FILE=~/opencv/opencv-3.1.0/platforms/linux/arm-gnueabi.toolchain.cmake -D CMAKE_AR=/usr/arm-linux-gnueabihf/bin/ar -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-3.1.0/modules -D ENABLE_NEON:BOOL=ON -D WITH_TBB=ON -D BUILD_TBB=ON -D WITH_QT=OFF -D WITH_OPENGL=OFF -D SOFTFP=ON ..
実行結果は
-- General configuration for OpenCV 3.1.0 =====================================
-- Version control: unknown
--
-- Platform:
-- Host: Linux 4.8.0-46-generic i686
-- Target: Linux 1 arm
-- CMake: 3.5.1
-- CMake generator: Unix Makefiles
-- CMake build tool: /usr/bin/make
-- Configuration: RELEASE
--
-- C/C++:
-- Built as dynamic libs?: YES
-- C++ Compiler: /usr/bin/arm-linux-gnueabihf-g++ (ver 5.4.0)
-- C++ flags (Release): 省略
-- C Compiler: /usr/bin/arm-linux-gnueabihf-gcc
-- C flags (Release): 省略
-- C flags (Debug): 省略
-- Linker flags (Release): -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now
-- Linker flags (Debug): -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now
-- Precompiled headers: YES
-- Extra dependencies: dl m pthread rt
-- 3rdparty dependencies: zlib libjpeg libwebp libpng libtiff libjasper IlmImf libprotobuf tbb
--
-- OpenCV modules:
-- To be built: core flann imgproc ml photo reg surface_matching video dnn fuzzy imgcodecs shape videoio highgui objdetect plot superres ts xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib datasets rgbd stereo structured_light tracking videostab xfeatures2d ximgproc aruco optflow stitching
-- Disabled: world contrib_world
-- Disabled by dependency: -
-- Unavailable: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 python3 viz cvv hdf matlab sfm
--
-- GUI:
-- QT: NO
-- GTK+: NO
-- GThread : NO
-- GtkGlExt: NO
-- OpenGL support: NO
-- VTK support: NO
--
-- Media I/O:
-- ZLib: zlib (ver 1.2.8)
-- JPEG: libjpeg (ver 90)
-- WEBP: build (ver 0.3.1)
-- PNG: build (ver 1.6.19)
-- TIFF: build (ver 42 - 4.0.2)
-- JPEG 2000: build (ver 1.900.1)
-- OpenEXR: build (ver 1.7.1)
-- GDAL: NO
--
-- Video I/O:
-- DC1394 1.x: NO
-- DC1394 2.x: NO
-- FFMPEG: NO
-- codec: NO
-- format: NO
-- util: NO
-- swscale: NO
-- resample: NO
-- gentoo-style: NO
-- GStreamer: NO
-- OpenNI: NO
-- OpenNI PrimeSensor Modules: NO
-- OpenNI2: NO
-- PvAPI: NO
-- GigEVisionSDK: NO
-- UniCap: NO
-- UniCap ucil: NO
-- V4L/V4L2: NO/YES
-- XIMEA: NO
-- Xine: NO
-- gPhoto2: NO
--
-- Parallel framework: TBB (ver 4.3 interface 8002)
--
-- Other third-party libraries:
-- Use IPP: NO
-- Use VA: NO
-- Use Intel VA-API/OpenCL: NO
-- Use Eigen: YES (ver 3.2.92)
-- Use Cuda: NO
-- Use OpenCL: YES
-- Use custom HAL: NO
--
-- OpenCL:
-- Version: dynamic
-- Include path: ~/opencv-3.1.0/3rdparty/include/opencl/1.2
-- Use AMDFFT: NO
-- Use AMDBLAS: NO
--
-- Python 2:
-- Interpreter: /usr/bin/python2.7 (ver 2.7.12)
--
-- Python 3:
-- Interpreter: /usr/bin/python3 (ver 3.5.2)
--
-- Python (for build): /usr/bin/python2.7
--
-- Java:
-- ant: NO
-- JNI: NO
-- Java wrappers: NO
-- Java tests: NO
--
-- Matlab: Matlab not found or implicitly disabled
--
-- Documentation:
-- Doxygen: NO
-- PlantUML: NO
--
-- Tests and samples:
-- Tests: YES
-- Performance tests: YES
-- C/C++ Examples: YES
--
-- Install path: /usr/local
--
-- cvconfig.h is in: ~/opencv-3.1.0/build
-- -----------------------------------------------------------------
こんな感じです。
あとは、
sudo make -j2
CPUコアの指定を-j2で実施しています。
2コアでmakeします。
Makeが完了したら
sudo make install
でおわり。