OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
UbuntuへのOpenCV-Pythonのインストール

覚え書き
: 可能であればPyPIで配布されているバイナリの使用を推奨する。詳細は Install OpenCV for Python with pip を参照。

目標

このチュートリアルでは、UbuntuシステムでOpenCV-Pythonをセットアップする方法を学ぶ。以下の手順はUbuntu 16.04および18.04(いずれも64ビット)でテストされている。

OpenCV-PythonはUbuntuに2通りの方法でインストールできる:

  • Ubuntuのリポジトリで利用可能なビルド済みバイナリからインストールする
  • ソースからコンパイルする。本節では両方を見ていく。

もう一つの重要な点は、必要となる追加ライブラリである。OpenCV-Pythonは Numpy のみを必要とする(後述する他の依存関係に加えて)。ただし本チュートリアルでは、手軽できれいなプロット用に Matplotlib も使用する(OpenCVと比べてずっと使いやすいと感じる)。Matplotlibは省略可能だが、強く推奨する。同様に、対話型Pythonターミナルである IPython も見ていくが、こちらも強く推奨する。

ビルド済みバイナリからのOpenCV-Pythonのインストール

この方法は、単にOpenCVアプリケーションのプログラミングや開発を行う場合に最適である。

ターミナルで(rootユーザとして)以下のコマンドを実行し、パッケージ python3-opencv をインストールする。

$ sudo apt-get install python3-opencv

Python IDLE(またはIPython)を開き、Pythonターミナルで以下のコードを入力する。

import cv2 as cv
print(cv.__version__)

エラーなく結果が出力されれば、おめでとう!!! OpenCV-Pythonのインストールに成功している。

これは非常に簡単である。ただし、この方法には問題がある。aptリポジトリには常に最新版のOpenCVが含まれているとは限らない。例えば、このチュートリアルを執筆している時点で、aptリポジトリには2.4.8が含まれているが、最新のOpenCVバージョンは3.xである。Python APIに関して言えば、最新版には常にはるかに優れたサポートと最新のバグ修正が含まれている。

したがって、最新のソースコードを入手するには次の方法、すなわちソースからのコンパイルが望ましい。また、いずれOpenCVに貢献したい場合にも、この方法が必要になる。

ソースからのOpenCVのビルド

ソースからのコンパイルは最初は少し複雑に思えるかもしれないが、いったん成功すれば何も複雑なことはない。

まずいくつかの依存関係をインストールする。一部は必須で、一部は省略可能である。必要なければ省略可能な依存関係はスキップできる。

必須のビルド依存関係

インストールを構成するために CMake、コンパイルのために GCC、Pythonバインディングをビルドするために Python-develNumpy などが必要である。

sudo apt-get install cmake
sudo apt-get install gcc g++

python2をサポートするには:

sudo apt-get install python-dev python-numpy

python3をサポートするには:

sudo apt-get install python3-dev python3-numpy

次に、GUI機能のための GTK サポート、カメラサポート(v4l)、メディアサポート(ffmpeg, gstreamer)などが必要である。

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

gtk2をサポートするには:

sudo apt-get install libgtk2.0-dev

gtk3をサポートするには:

sudo apt-get install libgtk-3-dev

省略可能な依存関係

上記の依存関係があれば、UbuntuマシンにOpenCVをインストールするのに十分である。ただし要件によっては、いくつか追加の依存関係が必要になることがある。そうした省略可能な依存関係の一覧を以下に示す。インストールするかしないかはあなた次第である :)

OpenCVにはPNG、JPEG、JPEG2000、TIFF、WebPなどの画像フォーマット用のサポートファイルが付属している。ただしそれらは少し古い可能性がある。最新のライブラリを入手したい場合は、これらのフォーマットのシステムライブラリ用の開発ファイルをインストールできる。

sudo apt-get install libpng-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libopenexr-dev
sudo apt-get install libtiff-dev
sudo apt-get install libwebp-dev
覚え書き
Ubuntu 16.04を使用している場合は、JPEG2000フォーマットのシステムレベルサポートを追加するために libjasper-dev もインストールできる。

OpenCVのダウンロード

最新のソースをOpenCVの GitHubリポジトリ からダウンロードする。(OpenCVに貢献したい場合はこちらを選ぶ。そのためには、まず Git をインストールする必要がある)

$ sudo apt-get install git
$ git clone https://github.com/opencv/opencv.git

これによりカレントディレクトリに "opencv" フォルダが作成される。クローンにはインターネット接続によって多少時間がかかることがある。

次にターミナルウィンドウを開き、ダウンロードした "opencv" フォルダに移動する。新しい "build" フォルダを作成し、そこに移動する。

$ mkdir build
$ cd build

構成とインストール

必要な依存関係がすべて揃ったので、OpenCVをインストールしよう。インストールはCMakeで構成する必要がある。CMakeはどのモジュールをインストールするか、インストールパス、どの追加ライブラリを使用するか、ドキュメントやサンプルをコンパイルするかなどを指定する。この作業の大部分は、適切に設定されたデフォルトパラメータによって自動的に行われる。

OpenCVライブラリのビルドの構成には通常、以下のコマンドを使用する(buildフォルダから実行する):

$ cmake ../

OpenCVのデフォルトでは、ビルドタイプは "Release"、インストールパスは "/usr/local" と想定される。CMakeオプションに関する追加情報は、OpenCVの C++ compilation guide を参照:

CMakeの出力に以下の行が表示されるはずである(これらはPythonが正しく見つかったことを意味する):

-- Python 2:
-- Interpreter: /usr/bin/python2.7 (ver 2.7.6)
-- Libraries: /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6)
-- numpy: /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.8.2)
-- packages path: lib/python2.7/dist-packages
--
-- Python 3:
-- Interpreter: /usr/bin/python3.4 (ver 3.4.3)
-- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3)
-- numpy: /usr/lib/python3/dist-packages/numpy/core/include (ver 1.8.2)
-- packages path: lib/python3.4/dist-packages

次に "make" コマンドでファイルをビルドし、"make install" コマンドでインストールする。

$ make
# sudo make install

インストールは完了である。すべてのファイルは "/usr/local/" フォルダにインストールされる。ターミナルを開いて "cv2" のインポートを試す。

import cv2 as cv
print(cv.__version__)