Ubuntu16.04にOpenCV3.4.0をソースからビルドしインストールしたときのメモ。OpenCV3.4.1がすでにリリースされており、ソースからビルドでき、サンプルプログラムは問題なく動いた。ただし、Yolo V3を実行するときにエラーが出る。3.4.1にバグがあるので、3.4.0をインストールした。
OpenCV: Installation in Linux
環境
- Laptop
- DELL Alienware 15 R4
- CPU: Intel i7-8750K, Memory:16GB, GPU: Nvidia 1070, Memory: 8GB)
- xubunut16.04.2
- Kernel 4.13.0-43-generic
- gcc/g++ 5.4.0
- Desktop
- CPU: Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz (6 core)
- GPU: NVIDIA GTX 1080Ti
- Memory: 32GB
準備
- sudo apt-get install build-essential
- sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libhdf5-dev libwebp-dev libtiff-dev libjasper-dev
- sudo apt install checkinstall auto-apt ccache
ソースコードのダウンロード
- cd
- mkdir src
- cd src
- 以下をクリックしてopencv-3.4.0をダウンロードする。
- tar xvzf opencv-3.4.0.tar.gz
- ln -s opencv-3.4.0 opencv
- 以下をクリックしてopencv_contrib-3.4.0をダウンロードする。
- tar xvzf opencv_contrib-3.4.0.tar.gz
- ln -s opencv_contrib-3.4.0 opencv_contrib
ソースのビルド
- cd ~/src/opencv
- mkdir build
- cd build
- cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/src/opencv_contrib/modules -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_VTK=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_OPENGL=ON -D WITH_CUDA=ON -D CUDA_ARCH_BIN=”6.1″ -D CUDA_ARCH_PTX=”6.1″ ..
- make -j 12
- コンパイルが終わるまで30分ぐらいかかりました。
- sudo make install
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
- sudo ldconfig
テスト
- cd ~/src/opencv/samples/data
- ~/src/opencv/build/bin/cpp-example-facedetect lena.jpg
- 下のウインドウが表示されれば成功。お疲れ様!
- 以下のようなエラーが出る場合
- error while loading shared libraries: libopencv_imgcodecs.so.3.4: cannot enable executable stack as shared object requires: Invalid argument
- 以下のコマンドを実行してから
- sudo apt install execstack
- sudo execstack -c /usr/local/lib/*opencv*.so*
- 再度、テストプログラムを実行する。
- ~/src/opencv/build/bin/cpp-example-facedetect lena.jpg
コメント
make -j 12を実行するとmake: *** ターゲットが指定されておらず, makefile も見つかりません. 中止.
となります。解決方法はありますか?
この記事はUbuntu16.04での記事なので,Ubuntuのバージョンが違うとうまくいかないと思います.お使いのUbuntuバージョンを教えてください.