はじめに
opencv2を使う必要が生じたので、インストールしてみる。最終的にpythonで使えるところまでもっていく。ここのサイトを参考に進める。
http://shumilinux.blogspot.jp/2015/08/ubuntu-1404-lts-opencv.html
環境
OS Ubuntu14.04
python 2.7.11
など
事前準備
まず既存環境を最新状態にする。
sudo apt-get update
sudo apt-get upgrade
次に必要なパッケージをインストールする。
sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
次にOpenCVのソースファイルを準備する。
cd ~
wget https://github.com/opencv/opencv/archive/2.4.11.zip
unzip 2.4.11.zip
cd opencv-2.4.11/
OpenCVをインストールする
buildディレクトリを作って、そこでcmakeする。
mkdir build
cd build/
cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON ..
次にOpenCVをbuildする。
make
・・・
nvcc fatal : Unsupported gpu architecture 'compute_11'
CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message):
Error generating
/home/ohmasa/opencv-2.4.11/build/modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o
make[2]: *** [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o] エラー 1
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] エラー 2
make: *** [all] エラー 2
などとエラーが出た。unsupported gpu architecture
って書いてある。
ぐぐってみたところ、以下のようなサイトを発見した。
http://stackoverflow.com/questions/28010399/build-opencv-with-cuda-support
このAnswerによると、cmakeの時に-D CUDA_GENERATION=Auto
などとやってないことが問題と思われる。よって上記をcmakeのオプションに加えて再度実行。
make
・・・
-- checking for module 'gstreamer-base-1.0'
-- package 'gstreamer-base-1.0' not found
-- checking for module 'gstreamer-video-1.0'
-- package 'gstreamer-video-1.0' not found
-- checking for module 'gstreamer-app-1.0'
-- package 'gstreamer-app-1.0' not found
-- checking for module 'gstreamer-riff-1.0'
-- package 'gstreamer-riff-1.0' not found
-- checking for module 'gstreamer-pbutils-1.0'
-- package 'gstreamer-pbutils-1.0' not found
-- Looking for linux/videodev.h
-- Looking for linux/videodev.h - not found
-- Looking for linux/videodev2.h
-- Looking for linux/videodev2.h - found
-- Looking for sys/videoio.h
-- Looking for sys/videoio.h - not found
-- Looking for libavformat/avformat.h
-- Looking for libavformat/avformat.h - found
-- Looking for ffmpeg/avformat.h
-- Looking for ffmpeg/avformat.h - not found
-- CUDA detected: 8.0
・・・
さっきよりは進んだし、CUDAも認識されているようだが、いろんなもんが足りない感じ。
エラーの対応
そこで発想を変えて、現状で最新のopencv2.4.13を入れることにする。よって以下のようにやり直し。
wget https://github.com/opencv/opencv/archive/2.4.13.zip
unzip 2.4.13.zip
cd opencv-2.4.13/
mkdir build
cd build/
cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON -D CUDA_GENERATION=Auto ..
すると問題なくcmakeされた。
make
make
も問題なく完了した。
sudo make install
インストールもうまくいったみたい。
サンプルプログラムを実行する
お決まりのlenaさん画像にfacedetectするサンプルを実行する。
cd ~/opencv-2.4.11/samples/c
chmod +x build_all.sh
./build_all.sh
./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg
ちゃんとlenaさんの顔に丸印がついた画像が表示された。