Ubuntu 18.04 に入っているopencvは3.2 でした。3.4が必要になったので、ソースコードからビルドしました。
準備
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
ソースコードの入手
git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git
(cd opencv; git checkout -b work 3.4.3)
(cd opencv_contrib; git checkout -b work 3.4.3)
ビルド
cd opencv
mkdir build
cd build/
cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8 2>&1 |tee make.log
cmake のときに -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules
をつけることでcontribの方もまとめてビルドされます。
インストール
sudo make install
sudo ldconfig
つまずいたところ
自分でffmpegをビルドしたときに /usr/local/lib にできた以下のライブラリがリンクエラーを引き起こしたので、いったんこれらのファイルを別のディレクトリに退避させました。
(どうもダイナミックリンクライブラリを想定しているところにスタティックリンクライブラリを見つけてしまって誤動作しているっぽい。)
libavcodec.a libavfilter.a libavutil.a libswresample.a
libavdevice.a libavformat.a libpostproc.a libswscale.a