きっかけ
C++の利用を念頭に置いたOpenCVの環境をUbuntuに構築する方法を解説しているサイトは数多ありますが、できたと思っても動画の保存が出来なかったりライブラリが古かったりで、かなり試行錯誤しました。
この記事が自分と同様に困っている方の参考になれば幸いです。
実行環境
OS:Ubuntu 20.04.5 LTS
OpenCV:3.4.16
インストール方法
https://opencv.org/releases/ から任意のSourcesをクリックしてzipファイルをダウンロード
・Iplimageなど一部昔の関数は4.x以降だと動かず
ホームディレクトリに展開
Ubuntu左下のメニューからターミナル(端末)を開いて以下を1行ずつ入力
$ cd opencv-3.4.16 //フォルダ名は入力途中でTabを押すと補完してくれる
$ mkdir build
$ cd build
//ここで$ sudo su - を入力してroot権限を持った場合は以下の”sudo”はいらない
$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt-get update
$ sudo apt-get -y upgrade
$ sudo apt-get -y install build-essential
//以下コピペ推奨 マウスのホイールクリックで貼り付けできる場合あり
$ sudo apt-get -y install libv4l-dev
$ sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
//ここでエラーが出た場合はこの記事一番下を参照
$ sudo apt install libjasper1 libjasper-dev
$ sudo apt-get -y install cmake
$ sudo apt-get -y install libjpeg62 libjpeg62-dev
$ sudo apt-get -y install libgtk2.0-0 libgtk2.0-dev
$ sudo apt-get -y install libpng-dev
$ sudo apt-get -y install libtiff5-dev libtiff-dev
$ sudo apt-get -y install libunicap2 libunicap2-dev
$ sudo apt-get -y install libswscale-dev
$ sudo apt-get -y install libavformat-dev
$ sudo apt-get -y install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
$ sudo apt-get -y install libcanberra-gtk-module
$ cmake .. -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local
$ sudo make -j4
$ sudo make install
$ sudo ldconfig
これでOpenCV本体はインストール完了
適当なサンプルコードをテストします。
プログラムがあるフォルダにcd
ターミナルでフォルダの場所に移動する方法3つーーーー
・cdのあとに繰り返して地道に移動 上の階層に行くには cd ..
・ファイルマネージャーでフォルダを掴んでターミナル上ではなす
・ファイルマネージャー上でフォルダを開いた画面で右クリック、「端末で開く」を選択
ーーーーーーーーーーーーーーーーーーーーーーーーー
makefileを開く(ターミナルからならopen makefile またはxdg-open makefile。ファイルマネージャーやvscodeからでもok)
makefile内を編集ーー
SRCS = [コンパイルするコードファイル名] 例. samplecv1.cpp
PROG = [実行ファイル名。適当な名前] 例. samp
ーーーーーーーーーーー
$ make
$ ./samp
これで実行が確認できたらok。おつかれさまでした。
$ sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" を入れた際のエラー
エラー:6 http://security.ubuntu.com/ubuntu xenial-security InRelease
公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY [16桁のアルファベットと数字]
パッケージリストを読み込んでいます... 完了
W: GPG エラー: http://security.ubuntu.com/ubuntu xenial-security InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY [16桁のアルファベットと数字]
E: リポジトリ http://security.ubuntu.com/ubuntu xenial-security InRelease は署名されていません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
そのような場合は以下のコードを入力してみてください。
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [16桁のアルファベットと数字]