スポンサーリンク

公式サイトの翻訳と解説によるOpenCVの環境構築2 ~ダウンロード編~

記事内に広告が含まれています。

前回記事の続きになります。前回はOpenCVをインストールするPCの環境と、インストール方法の概要について説明しました。

今回は、ソースコードのダウンロード方法、ダウンロードする際の注意点をまとめます。

はじめは僕の覚え書きと解説がメインだったのですが、書いてるうちに目的が自己満足になってきてしまったので、その分長くなってしまっています。この記事を参考にしている方にはごめんなさい。

※この記事は2021/1/11(月)現在のものです。前回記事は2020/12/24(木)現在のものでしたが、記事作成のタイミングによって、情報確認のタイミングもずれています。

スポンサーリンク

OpenCVビルドの準備

まずはOpenCVをインストールするに当たって必要なものを確認していきます。公式サイトのPrerequisites(前提条件)によると、

Install C++ compiler and build tools. On *NIX platforms it is usually GCC/G++ or Clang compiler and Make or Ninja build tool. On Windows it can be Visual Studio IDE or MinGW-w64 compiler. Native toolchains for Android are provided in the Android NDK. XCode IDE is used to build software for OSX and iOS platforms.

C++コンパイラとビルドツールをインストールしよう。UNIX系を使っているのであれば、GCC/G++コンパイラかClangコンパイラとMakeかNinjaビルドツールを使うことになるはずだ。Windowsを使っているのであれば、Visual Studio IDEかMinGW-w64コンパイラを使うことになるだろう。アンドロイド用のネイティブツールチェーンはAndroid NDKが提供してくれている。XCode IDEはOSXやiOSプラットフォーム用のソフトウェアをビルドするのに使われている。

Install CMake from the official site or some other source.

公式サイトかそれ以外のソースからCMakeをインストールしよう。

Get other third-party dependencies: libraries with extra functionality like decoding videos or showing GUI elements; libraries providing optimized implementations of selected algorithms; tools used for documentation generation and other extras. Check OpenCV configuration options reference for available options and corresponding dependencies.

それ以外のサードパーティの依存関係を入手しよう。具体的には、動画のデコードやGUI要素の表示といった拡張機能ライブラリ、選択されたアルゴリズムの最適な実装を提供するライブラリ、ドキュメント生成や他の機能のために使われるツールなどのことだ。利用可能なオプションと、それに対応した依存関係についてはOpenCV設定オプションリファレンスを確認してほしい。

と書いてあります。要するに、あらかじめやっておくこととしては、

  • 自分の環境に適したコンパイラのインストール
  • CMakeのインストール
  • 依存関係の解決(リファレンスを確認しながら)

の3つがあるってことですな。依存関係に関してはまた書くつもりなので、コンパイラとCMakeをインストールして使えるようにしておいてくださいませ~。

ソースコードの入手

ソースコードからビルドする場合は、当然ソースコードを自らのPCにダウンロードする必要があります。ただ、その際にリポジトリの構造を理解しておかないと躓きそうなので、公式サイトから引用しときます。

OpenCVについて調べている中で、”opencv”と”opencv_contrib”の違いって何だ?と思ったことがある方もいらっしゃるかもしれませんが、その説明になります。

Typical software project consists of one or several code repositories. OpenCV have two repositories with code: opencv – main repository with stable and actively supported algorithms and opencv_contrib which contains experimental and non-free (patented) algorithms; and one repository with test data: opencv_extra.

大抵のソフトウェアプロジェクトは、一つか複数のコードリポジトリで出来ている。OpenCVの場合はコードを含んだ2つのリポジトリがある。その内訳は、安定していてアクティブに対応しているアルゴリズムを含めたメインリポジトリopencvと、試験的で無償ではない(つまり、特許取得済み)アルゴリズムを含んでいるopencv_contribだ。そして、それら2つのコード付きリポジトリに加えてテストデータの入った一つのリポジトリopencv_extraもある。

正直、ハイフンとかセミコロンのせいで、この訳が合ってるのかどうか少し自信がありませんが、リポジトリは全部で3つあるという理解でいいと思います。

その3つのリポジトリを、コードを含んでいるかどうかでグループ分けをすると、{opencv, opencv_contrib}というグループと、{opencv_extra}というグループに分けられるということでしょう。

そのコードを含んでいるグループについては安定して無償で使えるのか、それとも開発中だったり無償では使えなかったりするのか(拡張パック的な扱いなのか)によって分けられていて、前者が”opencv”、後者が”opencv_contrib”というリポジトリにそれぞれ入っているって感じかと思います。

ちなみに、リポジトリってのはファイルやフォルダと一緒に、その変更履歴も記録しておく場所みたいなもののことです。

なので、OpenCVをビルドしたい場合、”opencv”と”opencv_contrib”の2つのリポジトリだけをダウンロードしておけばいいということになります。

ではダウンロードするにはというと、

You can download a snapshot of repository in form of an archive or clone repository with full history.

ソースコードは、圧縮形式でリポジトリのスナップショットをダウンロードするか、すべての変更履歴を持ったリポジトリをクローンするかで取得できる。

とあります。

つまり、ソースコードは、zipファイルなどをダウンロードするか、git cloneでダウンロードするかということになります。後者ではgitコマンドを使うことになるので、別にgitもインストールしておいてくださいませ~。MSYS2なら”pacman -S git”でgitをインストールできますので。

まずは、圧縮されたソースをダウンロードする方法です。こちらは、以下のURLからダウンロードできるようになっています。

スポンサーリンク

次に、リポジトリをクローンする方法です。次のコマンドを実行することでダウンロードできるようになっています。

git clone https://github.com/opencv/opencv

git clone https://github.com/opencv/opencv_contrib

git clone https://github.com/opencv/opencv_extra

3つある内、最初のものがopencv、2つ目がopencv_contrib、最後がopencv_extraを取得するためのコマンドです。

これら3つは、checkoutコマンドを利用して、ビルド対象を特定のタグに変更することが出来るようになっています。コマンドとしてはこんな感じです。

git -C opencv checkout <some-tag>

git -C opencv_contrib checkout <same-tag-as-opencv>

git -C opencv_extra checkout <same-tag-as-opencv>

この-Cというのは操作対象となるディレクトリを、カレントディレクトリから変更するためのコマンドです。<some-tag>には、具体的なタグ名が入ります。もし4.5.1をビルドしたければ、

git -C opencv checkout 4.5.1

というようにして実行します。

OpenCVの場合、git cloneを実行すると、カレントディレクトリにopencvというフォルダが作られて、その中に様々なファイルがダウンロードされます。なので、操作対象としては、カレントディレクトリに作られたopencvの中のファイルを指定する必要があるので、-C opencvが必要になります。

ここで、タグについて注意点が公式サイトに書かれているので、そちらも載せておきます。

If you want to build software using more than one repository, make sure all components are compatible with each other. For OpenCV it means that opencv and opencv_contrib repositories must be checked out at the same tag or that all snapshot archives are downloaded from the same release.

複数のリポジトリを使ってソフトウェアをビルドする場合、すべての要素が互いに互換性があるようにしなければならない。OpenCVの場合、opencvopencv_contribのリポジトリが同じタグ、あるいはすべてのアーカイブのスナップショットが同じリリースからダウンロードされていなければならない。

要するに、ビルド対象のタグは一緒にしておきましょうってことですな。例えば、opencvのタグを4.5.1に設定しているのに、opencv_contribのタグは3.4.1とか、4.5.0に設定されてると上手くビルドできないということになります。

そう考えれば、checkoutコマンドはビルドするときは実行しておいた方が無難でしょう。

MSYS2の場合

僕のようにMSYS2を使っている方であれば、msys2を開いて、起動直後に上のコマンドを実行すれば、リポジトリは次のディレクトリにダウンロードされます。

C:/msys64/home/usr/

もし”opencv”だけでなく、”opencv_contrib”などもクローンする場合は、新しくディレクトリを作った方が分かりやすくなると思います。というわけで、カレントディレクトリをusrに合わせた後、次のような操作をしておくことをおすすめします。

mkdir opencv
cd opencv

C:/msys64/home/usr/というディレクトリの中に、opencvというフォルダを新しく作って、カレントディレクトリを新しく作ったopencvに変更しているだけです。

これで、opencvというフォルダの中にopencvopencv_contribが作られることになります。

OpenCVのビルドに行きたいのですが…

ソースコードをダウンロード出来たら、次はビルドになります。として続きを書いていくと、長くなりすぎるような気がするので、今回はここまで。

次回はビルドになるはずです(ようやく)。

タイトルとURLをコピーしました