Ubuntu
OpenCV
python3

UbuntuStdio 17.10にOpenCV2インストール失敗編

gccをインストールし直したいが失敗が怖くて出来ない!

UbuntuStdio 18.04時のインストール

結論:makeでgccのVerをサポートしていないと怒られました。
https://symfoware.blog.fc2.com/blog-entry-2162.html
Ubuntu 18.06 ServerにOpenCV 3.4.1をインストール

と言う記事を見つけたので再チャレンジしてみました。

#インストールしていないが、おまじないで実行
$ sudo apt autoremove libopencv-dev python-opencv

$ wget --no-check-certificate https://raw.githubusercontent.com/milq/milq/master/scripts/bash/install-opencv.sh
$ chmod +x install-opencv.sh
$ ./install-opencv.sh 
・・・
[  6%] Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_gpu_mat.cu.o
In file included from /usr/include/host_config.h:50:0,
                 from /usr/include/cuda_runtime.h:78,
                 from <command-line>:0:
/usr/include/crt/host_config.h:121:2: error: #error -- unsupported GNU version! gcc versions later than 6 are not supported!
 #error -- unsupported GNU version! gcc versions later than 6 are not supported!
  ^~~~~
CMake Error at cuda_compile_generated_gpu_mat.cu.o.cmake:206 (message):
  Error generating
  /home/ty/python/map/japan/japanmap/OpenCV/build/modules/core/CMakeFiles/cuda_compile.dir/src/cuda/./cuda_compile_generated_gpu_mat.cu.o


modules/core/CMakeFiles/opencv_core.dir/build.make:63: recipe for target 'modules/core/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_gpu_mat.cu.o' failed
make[2]: *** [modules/core/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_gpu_mat.cu.o] Error 1
CMakeFiles/Makefile2:1784: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

UbuntuStdio 17.10時のインストール

結論:makeでgccのVerをサポートしていないと怒られました。
良いところまでいったんだけど。
[ 28%] Built target pch_Generate_opencv_perf_stitching
/usr/include/host_config.h:119:2: error: #error -- unsupported GNU version! gcc versions later than 5 are not supported!

これ以外にも、・・・のレシピで失敗しましたエラーが3つでて止まりました。
因みにgccはどうしようもないのかな?
Ubuntu 16.04ではインストールしている人がいるので、本当にインストールしたければ、16.04にバージョンを落とす必要がありそうです。

Required Packages 必須パッケージ

  • GCC 4.4.x or later (これが問題)

    $ gcc --version
    gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
    

次回、挑戦する時に、多分忘れてしまうので記録として残しておきます。python初心者で、今までは書いてあることが理解出来なかったのですが、今回は行けそうな気がしたのですが。

https://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html

OpenCV 3.4.1-dev

Installation in Linux

このドキュメントを見てこの通りやれば出来るような気がしたのですが「以下の手順はUbuntu 10.04でテストされています」これが、気になりました。

image.png
しかし、日付が2018/02/27になっているので・・・

実際に実行したのは黒い部分です。

Required Packages 必須パッケージ

  • GCC 4.4.x or later

    $ gcc --version
    gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
    
  • CMake 2.8.7 or higher

    $ cmake --version
    cmake version 3.9.1
    
  • Git

    $ git --version
    git version 2.14.1
    
  • GTK+2.x or higher, including headers (libgtk2.0-dev)

    $ apt search gtk+2
    libgtk2.0-dev/artful 2.24.31-2ubuntu1 amd64
    
    $ sudo apt install libgtk2.0-dev
    
  • pkg-config

      $ apt search pkg-config
      pkg-config/artful,now 0.29.1-0ubuntu2 amd64 [インストール済み]
  • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
  • Python 2.6以降およびNumpy 1.5以降(開発者パッケージあり) (python-dev, python-numpy)
  • Python 3.6.3

    $ apt search numpy
    python3-numpy/artful,now 1:1.12.1-3.1ubuntu4 amd64 [インストール済み]
    $ apt search python3-dev
    python3-dev/artful,now 3.6.3-0ubuntu2 amd64 [インストール済み、自動]
    
  • ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev

    $ apt search libavcodec-dev
    libavcodec-dev/artful,now 7:3.3.4-2 amd64 [インストール済み、自動]
    $ apt search libavformat-dev
    libavformat-dev/artful,now 7:3.3.4-2 amd64 [インストール済み、自動]
    $ apt search libswscale-dev
    libswscale-dev/artful,now 7:3.3.4-2 amd64 [インストール済み、自動]
    
  • [optional] libtbb2 libtbb-dev

    $ apt search libtbb2
    libtbb2/artful,now 2017~U7-6 amd64 [インストール済み]
    $ apt search libtbb-dev
    libtbb-dev/artful,now 2017~U7-6 amd64 [インストール済み]
    
  • [optional] libdc1394 2.x

    $ apt search libdc1394
    libdc1394-22/artful,now 2.2.5-1 amd64 [インストール済み]
    
  • high level programming interface for IEEE 1394 digital cameras

    IEEE 1394デジタルカメラの高水準プログラミングインタフェース

  • [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev

    $ apt search libjpeg-dev
    libjpeg-dev/artful,now 8c-2ubuntu8 amd64 [インストール済み]
    $ apt search libpng-dev
    libpng-dev/artful,now 1.6.34-1 amd64 [インストール済み、自動]
    $ apt search libtiff
    libtiff5-dev/artful,now 4.0.8-5 amd64 [インストール済み]
    $ apt search libjasper-dev
    libjasper-dev/xenial-security 1.900.1-debian1-2.4ubuntu1.1 amd64
    $ sudo apt install libjasper-dev
    $ apt search libdc1394-22-dev
    libdc1394-22-dev/artful 2.2.5-1 amd64
    $ sudo apt install libdc1394-22-dev
    
  • [optional] CUDA Toolkit 6.5 or higher

    $ apt search cuda
    nvidia-cuda-toolkit/artful 8.0.61-1 amd64
    $ sudo apt install nvidia-cuda-toolkit
    update-alternatives: /usr/share/X11/xorg.conf.d/glamoregl.conf (glamor_conf) を提供するために自動モードで /usr/share/nvidia-384/glamor.conf を使います
    ・・・・
    dpkg: エラー: バージョン '-' は不正な構文です: revision number is empty
    dpkg: エラー: バージョン '-' は不正な構文です: revision number is empty
    dpkg: エラー: バージョン '-' は不正な構文です: revision number is empty
    dpkg: エラー: バージョン '-' は不正な構文です: revision number is empty
    dpkg: エラー: バージョン '-' は不正な構文です: revision number is empty
    dpkg: エラー: バージョン '-' は不正な構文です: revision number is empty
    dpkg: エラー: バージョン '-' は不正な構文です: revision number is empty
    dpkg: エラー: バージョン '-' は不正な構文です: revision number is empty
    dpkg: エラー: バージョン '-' は不正な構文です: revision number is empty
    ・・・・・
    update-initramfs: deferring update (trigger activated)
    INFO:Enable nvidia-384
    

The packages can be installed using a terminal and the following commands or by using Synaptic Manager:
パッケージは、ターミナルと次のコマンドを使用して、またはSynaptic Managerを使用してインストールできます。

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

上でインストールしているのでここはパス

Getting OpenCV Source Code 

You can use the latest stable OpenCV version or you can grab the latest snapshot from our Git repository.
最新の安定版OpenCVを使うか、Gitリポジトリから最新のスナップショットを取得することができます。

Getting the Latest Stable OpenCV Version

最新の安定したOpenCVバージョンを入手する

  • Go to our downloads page.
  • Download the source archive and unpack it.

    ソースアーカイブをダウンロードして解凍します。

Getting the Cutting-edge OpenCV from the Git Repository

Gitリポジトリから最新のOpenCVを入手する
Launch Git client and clone OpenCV repository. If you need modules from OpenCV contrib repository then clone it as well.
Gitクライアントを起動し、OpenCVリポジトリをクローンします。あなたがOpenCV contribリポジトリからモジュールを必要とするならば、それを複製してください。
For example

cd ~/<my_working_directory>
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

cd
mkdir opencv
cd opencv  (実際は/home/ty/opencv/)
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

cd ~/<my_working_directory>を作業フォルダを作成すると勘違いして、opencvフォルダを作成したため、説明文とフォルダが違ってしまいました。

Building OpenCV from Source Using CMake

CMakeを使ってソースからOpenCVをビルドする

  1. Create a temporary directory, which we denote as , where you want to put the generated Makefiles, project files as well the object files and output binaries and enter there.

    生成されたMakefile、プロジェクトファイル、オブジェクトファイル、出力バイナリを置いてそこに入る、という一時ディレクトリを作成します。

       For example 
       cd ~/opencv/opencv
       mkdir build
       cd build
    
  2. Configuring. Run cmake []

    設定 実行するcmake [<いくつかのオプションのパラメータ>]
    For example

    cmake -D CMAKE_BUILD_TYPE=Release -D  CMAKE_INSTALL_PREFIX=/usr/local ..
    

    注意

    この説明通りにやったらPython2用だった。

    Python3の場合は、下記のHPを参考にやると出来ました。
    https://qiita.com/sheep6box/items/37fb63c41d93c088013a

    $ sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D INSTALL_PYTHON_EXAMPLES=ON -D PYTHON_EXECUTABLE=$(which python3) -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=ON BUILD_EXAMPLES=ON -D WITH_FFMPEG=OFF -D  BUILD_opencv_java=OFF BUILD_opencv_test_java=OFF ..
    
  3. Build. From build directory execute make, it is recommended to do this in several threads
    ビルド。ビルドディレクトリからmakeを実行すると、これを複数のスレッドで行うことをお勧めします
    For example

make -j7 # runs 7 jobs in parallel

   $ sudo make -j7

ここで、GCC4.*以上はサポートしていませんエラー