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 | TechieRoop、omnioo lab. record | オムニオラボ WEB, LAMP, jQuery, ITのお話
# 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のが使えるよ→ソースからで結構大変そうで諦めそう」という状況。
- リポジトリの追加方法:RPMforgeリポジトリ導入(RPMforge) - CentOSで自宅サーバー構築
- RPMForgeとかはオススメされてない:CentOS7でepel,remi,rpmforgeリポジトリを有効にする - Qiita
- RPMForgeのffmpegは相当古い:fffmepgをYumでインストールする - Qiita
- (同コメント内のリンク先)ffmpegnのインストール:[FFmpeg] ffmpeg に libx265 をリンクする - Qiita
明日はなにをしようかな〜。大晦日。