VPS作業記録2

3日目(12/30)の記録です。

Djangoチュートリアルをやろうかなと思ってたのですが、またひとつインストール作業することにしました。
今回入れるのは、OpneCV です。
Versionは、2.4の最新版の2.4.11にしました(3.1もリリースされているのですが、なんとなくこっち。また、yumは、2.0なのでちょっと古過ぎる。)。
DOWNLOADS | OpenCV
必要な要件は、ここ(Installation in Linux — OpenCV 2.4.12.0 documentation)に書いてあるとおりっぽいのですが、apt-get用になってるので、多少読み替えが必要。

# yum install gcc
# yum install cmake
# yum install git
# yum install gtk2
# yum install gtk2-devel
# yum install python-devel
# yum install python-numpy
# yum install pkgconfig

必要要件の"ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev"なのですが、対応しそうなものがyum searchで見つけられず、とりあえず、放置して、先に進みます。

# wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.11/opencv-2.4.11.zip
# unzip opencv-2.4.11.zip
# cd opencv-2.4.11
# cmake .
# make
# make install

エラーは吐かなかったけど、無事インストールできた(?)

参考にしたところ:Install opencv in CentOS | TechieRoopomnioo lab. record | オムニオラボ WEB, LAMP, jQuery, ITのお話

そして、PythonからOpenCVが使えるように

# cp /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/site-packages

しようとしたら、そもそも"cv2.so"がない!!
なので、ここ(OpenCV 備忘録: OpenCVをubuntuのpythonで使用する (1))やここ(OpenCV2.0のインストール:Linux(Ubuntu) | OpenCV.jp)を読むと、Pythonのオプション(-D BUILD_PYTHON_SUPPORT=ON)を有効にしないとダメっぽいと。なにも考えずに、"cmake ."したので、そこからやり直し(?)ですね。

# cmake -D BUILD_EXAMPLES=ON -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_PYTHON_SUPPORT=ON .
# make
# make install

そして、

# cp /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/site-packages

みたいなことをしようとすると、また"cv2.so2がない。行き詰まったかなと思ったら、/usr/local/lib/python2.6/site-packages/cv2.soはできてた。システムのPythonの方になってしまったっぽい。ということで、これは、ちゃんと2.7を指定しないとダメなんだなーと思ったので、さて、どーするか・・・。

ここ(OpenCV - 2.x - Tech Note)がわかりやすかったです。

yum install libpng-devel libjpeg-devel libjasper-devel openexr-devel

は再度やっておく(libpng-develとかは既に入ってたけど)。
いろいろアドバイスもありました。
gtk2-develは、サーバーならいらないよとのこと。
「gitリポジトリから最新のソースコードを取得して、インストール先ディレクトリも作成。(/usr/local直下にOpenCVをインストールするのはオススメしません) 」とのこと。。。まじか・・・。
ffmpegは、リポジトリを追加するとよさげ(やってない)。

# cmake -D BUILD_EXAMPLES=ON \
        -D CMAKE_BUILD_TYPE=RELEASE \
        -D BUILD_PYTHON_SUPPORT=ON \
        -D PYTHON_EXECUTABLE=/usr/local/bin/python2.7 \
        -D PYTHON_PACKAGES_PATH=/usr/local/lib/python2.7/site-packages \
        -D PYTHON_NUMPY_INCLUDE_DIR=/usr/local/lib/python2.7/site-packages/numpy/core/include \
        -D PYTHON_LIBRARY=/usr/local/lib/libpython2.7.so \
        .

とかオプションをつけてみた。

-- General configuration for OpenCV 2.4.11 =====================================
--   Version control:               unknown
-- 
--   Platform:
--     Host:                        Linux 2.6.32-573.12.1.el6.x86_64 x86_64
--     CMake:                       2.8.12.2
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/gmake
--     Configuration:               RELEASE
-- 
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ Compiler:                /usr/bin/c++  (ver 4.4.7)
--     C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      
--     Linker flags (Debug):        
--     Precompiled headers:         YES
-- 
--   OpenCV modules:
--     To be built:                 core flann imgproc highgui features2d calib3d ml video legacy objdetect photo gpu ocl nonfree contrib python stitching superres ts videostab
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 androidcamera dynamicuda java viz
-- 
--   GUI: 
--     QT:                          NO
--     GTK+ 2.x:                    YES (ver 2.24.23)
--     GThread :                    YES (ver 2.28.8)
--     GtkGlExt:                    NO
--     OpenGL support:              NO
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib64/libz.so (ver 1.2.3)
--     JPEG:                        /usr/lib64/libjpeg.so (ver )
--     PNG:                         /usr/lib64/libpng.so (ver 1.2.49)
--     TIFF:                        build (ver 42 - 4.0.2)
--     JPEG 2000:                   /usr/lib64/libjasper.so (ver 1.900.1)
--     OpenEXR:                     /usr/lib64/libImath.so /usr/lib64/libIlmImf.so /usr/lib64/libIex.so /usr/lib64/libHalf.so /usr/lib64/libIlmThread.so (ver 1.6.1)
-- 
--   Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  NO
--     FFMPEG:                      NO
--       codec:                     NO
--       format:                    NO
--       util:                      NO
--       swscale:                   NO
--       gentoo-style:              NO
--     GStreamer:                   NO
--     OpenNI:                      NO
--     OpenNI PrimeSensor Modules:  NO
--     PvAPI:                       NO
--     GigEVisionSDK:               NO
--     UniCap:                      NO
--     UniCap ucil:                 NO
--     V4L/V4L2:                    YES/YES
--     XIMEA:                       NO
--     Xine:                        NO
-- 
--   Other third-party libraries:
--     Use IPP:                     NO
--     Use Eigen:                   NO
--     Use TBB:                     NO
--     Use OpenMP:                  NO
--     Use GCD                      NO
--     Use Concurrency              NO
--     Use C=:                      NO
--     Use Cuda:                    NO
--     Use OpenCL:                  YES
-- 
--   OpenCL:
--     Version:                     dynamic
--     Include path:                /root/opencv-2.4.11/3rdparty/include/opencl/1.2
--     Use AMD FFT:                 NO
--     Use AMD BLAS:                NO
-- 
--   Python:
--     Interpreter:                 /usr/local/bin/python2.7 (ver 2.7.11)
--     Libraries:                   /usr/local/lib/libpython2.7.so (ver 2.6.6)
--     numpy:                       /usr/local/lib/python2.7/site-packages/numpy/core/include (ver 1.10.2)
--     packages path:               /usr/local/lib/python2.7/site-packages
-- 
--   Java:
--     ant:                         NO
--     JNI:                         NO
--     Java tests:                  NO
-- 
--   Documentation:
--     Build Documentation:         NO
--     Sphinx:                      NO
--     PdfLaTeX compiler:           NO
--     Doxygen:                     YES (/usr/bin/doxygen)
-- 
--   Tests and samples:
--     Tests:                       YES
--     Performance tests:           YES
--     C/C++ Examples:              YES
-- 
--   Install path:                  /usr/local
-- 
--   cvconfig.h is in:              /root/opencv-2.4.11
-- -----------------------------------------------------------------

気になったのは、「/usr/local/lib/libpython2.7.so (ver 2.6.6)」となっている部分。2.7指定したのに、2.6.6なの?よくわからん。
こっちの記事(OpenCV - 2.x - Tech Note)だと、「-D BUILD_NEW_PYTHON_SUPPORT=ON」だけど、こっちの記事(OpenCV2.0のインストール:Linux(Ubuntu) | OpenCV.jp)だと「-D BUILD_PYTHON_SUPPORT=ON」で、NEWの有無の違いがあったりする。
3度目の

# make
# make install
# ldconfig /usr/local/lib

で、(たぶん)完了。cv2.soのコピーの必要もなかった。
参考(cmakeするときのオプションについて書いてある):http://www.buildinsider.net/small/opencv/07#CMakeOption



並列化とかする予定ないですが、

yum install openmpi openmpi-devel
ldconfig /usr/local/lib

してから、再度、openCVをcmakeしてmakeしてmake installしました。
cmakeのときのオプションは、

-D HAVE_OPENMP=ON

を加えたもので実行しました。

自分の為の備考:ドキュメントを生成する方法http://answers.opencv.org/question/7823/unable-to-build-documentation/



次に(openCVをインストールする前にやるべきですが)、ffmpegをインストールしたいと思います。
そのために、RPMforgeとかを追加しようかなと思って、ぐぐってみるといろんな情報がでてきました。
ffmpeg入れたい→RPMforgeレポジトリを入れればいいらしい→RPMforgeはもうメンテされてないからオススメじゃない→ffmpegはソースからコンパイルすると新しいversionのが使えるよ→ソースからで結構大変そうで諦めそう」という状況。

明日はなにをしようかな〜。大晦日。