OpenCVを使って画像処理を試したくて、環境作りに着手。C++用パッケージ(opencv-devel)を使えば簡単に出来るのだが、スキル向上を目的にソースファイルからビルドしてみた。
今回はWSL(Fedora)上にビルドしたので、それを紹介します。
詳しくはOpenCV公式サイトを参照されたい。
1.最小限のパッケージのインストール
$ sudo dnf upgrade
$ sudo dnf install -y cmake
$ sudo dnf install -y gcc
$ sudo dnf install -y g++
$ sudo dnf install -y wget
$ sudo dnf install -y unzip
※詳しくはこちら
https://docs.opencv.org/4.8.0/d7/d9f/tutorial_linux_install.html
※cmake時にエラーが出たので、インストール《エラー情報1》
$ sudo dnf install eigen3-devel
※実行時にエラーが出たので、インストール《エラー情報2》
$ sudo dnf install gtk2-devel pkg-config
2.Opencv4.8.0のダウンロードとソースからのインストール
①ダウンロード
$ wget https://github.com/opencv/opencv/archive/4.8.0.zip
②解凍
$ unzip 4.8.0.zip
③ビルドディレクトリを作成
$ cd opencv-4.8.0 && mkdir -p build && cd build
④ディレクトリ構造
opencv-4.8.0/
├── 3rdparty/
├── apps/
├── build/ ←ここにビルドします。
├── cmake/
├── data/
├── doc/
├── include/
├── modules/
├── platforms/
├── samples/
├── CMakeLists.txt
├── CONTRIBUTING.md
├── COPYRIGHT
├── LICENSE
├── README.md
└── SECURITY.md
⑤ビルドファイルの生成
$ cmake ..
⑥ビルド
$ make
$ sudo make install (OpenCVが/usr/localディレクトリにインストールされます。)
以上で、インストール完了です。
3.エラー情報
《エラー情報1》
cmake .. したら
— Configuring done
CMake Error in modules/core/CMakeLists.txt:
Imported target “Eigen3::Eigen” includes non-existent path
“C:/Anaconda3/Library/include”
in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:
The path was deleted, renamed, or moved to another location.
An install or uninstall procedure did not complete successfully.
The installation package was faulty and references files it does not
provide.
中略
— Generating done
CMake Generate step failed. Build files cannot be regenerated correctly.
【対策】
$ sudo dnf install eigen3-devel
《エラー情報2》
buildが最後まで通ったんだけど、Canny法でエッジを検出する単純プログラム実行で以下エラー
terminate called after throwing an instance of ‘cv::Exception’
what(): OpenCV(4.8.0-dev) /home/Fedora/opencv4x/modules/highgui/src/window.cpp:1272: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function ‘cvShowImage’
Aborted
【対策】
build前に、gtk2-devel pkg-configをインストール(このパッケージはランタイムです)
$ sudo dnf install gtk2-devel pkg-config
以上