スポンサーリンク

公式サイトの翻訳と解説によるOpenCVの環境構築1 ~概要編~

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

「プログラミングをやりたい!もっと上達したい!」と最高のモチベーションで勉強し始めても、環境構築のせいでモチベーションをごっそりと削がれることもあるかと思います。

仕事や研究みたいに環境のせいで使うことになった方は、モチベーションがマイナスに振り切ってしまうこともあるのではないでしょうか(僕と同じ研究室生がそんな感じでした)。

僕も最近、趣味半分にOpenCVを使う場面があったんですが、中々に大変でした。せっかく苦労したからってことで、その方法を解説しようかと思います。

環境としては、

  • Windows10 Pro
  • MSYS2
  • GCC/G++コンパイラ

という条件を想定しています。

僕は今のところ上記環境しか使うつもりしかないので、上記環境での環境構築方法をメモとして書いていきます。

公式サイトの文章を翻訳して解説を加えているので、もしかしたらVS Codeユーザの方やPythonユーザの方にも役立つ内容があるかもしれませんが、基本的には上記環境を前提にしています。

皆さんも良ければ参考にしてみてください~。

※1. 情報は2020/12/24(木)現在のものです。この記事の閲覧時点によっては、内容が古い可能性がありますのでご注意ください。

※2. この記事中には公式サイトからの文の引用と、それに対する日本語訳を付けていますが、より自然に読めるようにしたいとの考えから意訳になっていますので、間違いが含まれる可能性もあります。間違いを発見された場合、このブログの管理人まで伝えていただければ幸いです。方法はTwitterでもお問い合わせのページでもどちらでも構いません。

スポンサーリンク

OpenCVとは

この記事をご覧の方はすでにご存じだとは思いますが念のために軽く説明しておきます。もっと詳しく知りたいって方は、公式サイトの方をご覧くださいませ~。

まずは公式サイトのIntroductionから引用です。

OpenCV (Open Source Computer Vision Library: http://opencv.org) is an open-source library that includes several hundreds of computer vision algorithms.

OpenCV(Open Source Computer Vision Library: http://opencv.org)は数百のコンピュータビジョンアルゴリズムを持ったオープンソースライブラリだ。

という一文があります。もうちょっと分かりやすく説明してみます。

画像とか動画からパターンを認識するプログラム(例えばカメラアプリで笑顔を検出したらシャッターを切ったり、動画から動く物体を検出したり)を見たことがあるという方もいらっしゃるかと思います。あのようなプログラムを作るときのために色々と便利な機能を詰め合わせたライブラリだってことですな。

基本的にC++の標準ライブラリだけではpngやjpg等の画像データを扱うのはすごく大変なんですが、OpenCVを利用すると簡単に扱えたりします。

僕はOpenCVを最近触り始めたばかりで、具体的にどの程度までの機能があるのかはまだ分かりませんが、少なくとも画像の色をピクセル単位で取得することは簡単に出来たんで、それだけでもかなり便利だなぁと感じました。

ちょっと詳しい方であれば、そこから機械学習プログラムを直に組んでパターン認識の実験とかを出来るでしょうから。

といったあたりで閑話休題。

OpenCVの2通りのインストール

こちらも基本的には公式サイトの説明を見ながらやっていきます。

There are two ways of installing OpenCV on your machine: download prebuilt version for your platform or compile from sources.

OpenCVをあなたのパソコンにインストールする方法は2通りある。その2通りとは、ビルド済みのものをダウンロードするか、ソースからコンパイルするかだ。

とあります。そして、

In many cases you can find prebuilt version of OpenCV that will meet your needs.

大抵の場合、あなたが必要とするOpenCVのビルド済みバージョンは見つけられるだろう。

It can happen that existing binary packages are not applicable for your use case, then you’ll have to build custom version of OpenCV by yourself.

既にあるバイナリパッケージのどれもが、あなたが利用したいと思う場面において適さないである場合もあるだろう。その場合は、あなたが必要とするOpenCVのバージョンをあなた自身の手でビルドする必要がある。

ともあります。

つまり、OpenCVを利用しようと思ったら、OpenCVの運営側が予めビルドしてくれている物を使うっていうパターンと、自分でビルドして使うっていうパターンがあるってことですな。そして、自分の使いたい機能が提供されているバージョンのパッケージが無かったら、自分でビルドして使うしかないと。

ただ、自分でビルドするのは大変なので、何かしらのこだわりがない場合は運営側が用意してくれている物を使っておけばいいかと思います。特に2020/12/24現在では、最新版4.5.1はビルド済みの物があるので、Windows環境下でMicrosoftのVS Codeを使っている場合なんかはそちらを使っておけば良いかと思います。

なので順序としては、まずビルド済みの物を使えるか試してみて、もし上手く使えなかったり、欲しい機能が揃ったバージョンのビルド済み版が無かったりした場合に、自分でソースコードからビルドするってことになると思います。

で、この記事では上の引用の内の後者(つまり、ソースコードを自分でビルドする方法)を採ります。

というのも、僕はMSYS2でGNU makeとg++コンパイラを使っているのですが、その環境でOpenCVをリンクする方法がよく分からなかったんです。

だから自分でビルドすれば、どこに何のファイルがあるかとかを理解できるから、リンクの設定とかはやりやすくなるかと思いまして。(もしかしたら僕が何かを見落としてるからかもしれませんが)

スポンサーリンク

ソースコードからビルドする

さて、ソースコードをダウンロードして自分でビルドするという方法を採ると決めたわけですが、その際に役立ちそうなことが書かれていた部分を、またまた公式サイトから引用します。

OpenCV uses CMake build management system for configuration and build

OpenCVは設定とビルドに、CMakeビルド管理システムを使っている

という記述があります。ということで、ビルドにCMakeを利用できる(というか、利用しないとダメなのかな)ことが分かります。ここで2点解説を付けておきます。

まずCMakeについてです。こちらはざっくりと言えば、「ビルド時におけるコンパイラ間の差を吸収するためのサポートツール」になります。

僕のように開発も使用もWindows環境で、コンパイラも1つしか使わないという方だったら、わざわざCMakeを使う必要もないような気がしますが(Makefileを一つ書いておけば事足りるので)、同じWindows環境であってもGCCコンパイラとVisual Studio Codeの2つを使う必要がある方だったら役立つのかもしれません(・・・そんな人居てるのだろうか)。

ただCMakeは知っておくと、OpenCV含め、大概のライブラリをビルドできるので、新しいライブラリを導入するという観点からすれば便利なものではあります。

次に、引用元にもある”configuration”です。こちらは”設定”と訳しましたが、何の設定かと言うと、ビルド時に必要な設定と理解しておけばいいと思います。

例えばビルド時に、作るのは動的リンクライブラリ(.dllとか.soとか)なのか静的リンクライブラリ(.libとか.aとか)なのかとか、様々なライブラリはどこにあるかとかを設定できるようになっているのですが、そういった事前情報をCMakeで設定できるようになっているという意味になります。

終わりに

ちょっと長くなってきたので、この辺りでいったん切り上げますが、今回の記事では

  1. OpenCVは画像とか動画とかを簡単に扱えるようにする機能をまとめたものである
  2. OpenCVは必ずしもソースコードからビルドする必要はない
  3. ソースコードをビルドするときは、CMakeを使う

といった辺りを理解していただければいいかなと思います。

次は、具体的な作業の解説するんじゃないかと思います(くぅ、今回で辿り着きたかった)。

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