PythonでOpenCVを使った開発を行うための開発環境のセットアップについて

Computer VisionやML (Machine Learning: 機械学習) 、AI (Artifact Intelligence: 人工知能) を使ったサービスやアプリを開発するときや、これらの技術について学習するときなどに、PythonとOpenCVを利用します。

PythonとOpenCVは開発環境さえ整えてしまえば、使っているOSに依存せず、ほぼ同じコードや手順で開発できます。例えば、筆者が学習でこの記事執筆時に読んでいる書籍はUbuntu Linuxを使っています。しかし、著者はWindowsやmacOSを使用しています。それでも書籍に書かれているPythonのコードはそのまま同じように動きます。また、必要なライブラリの導入方法も同じです。

この記事では、Computer Vision, ML, AI向けにPythonとOpenCVをセットアップする方法について解説します。

目次

WSL: Windows Services for Linux のセットアップ

Windows上でUbuntuやmacOSと同じように開発するにはWSLが必要です。WSLのセットアップ方法については次の記事を参照してください。

シェルについて

この記事ではシェルでコマンドを実行します。macOSではターミナルアプリを使用します。WindowsではWSLのシェルを使用します。

Python3をインストールする

Windows (WSL)やUbuntuの場合はPython3は標準でインストールされていると思います。インストールされていない場合でも、この後のpip3をインストールするときに依存関係の一つとしてインストールされると思います。

macOSの場合はXcodeをインストールすると、Xcodeの初回起動時のセットアップ処理の中でPythonやNumPyもインストールされます。Xcodeのセットアップ方法については次の記事を参照してください。

Mesa 3D Graphics Libraryをインストールする (WindowsとUbuntu)

MesaプロジェクトはOpenGLのオープンソース版です。次のようにaptでインストールします。

sudo apt install libgl1-mesa-dev

Pip3をインストールする (WindowsとUbuntu)

PipはPythonの公式パッケージ管理ツールです。デフォルトでインストールされていると思いますが、aptでインストールします。

sudo apt install python3-pip

Tkinterをインストールする

TkinterはPythonからGUIを扱うためのライブラリです。Pythonから画像やグラフなどを表示するときに、Matplotlibを頻繁に使用します。このときに必要になるライブラリです。aptでインストールします。

sudo apt install python3-tk

インストールされていないと次のようなエラーが表示されて、MatplotlibのGUI機能が動作しません。

Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
  plt.show()

OpenCVをインストールする

OpenCVをインストールします。Pythonから使用するのでpip3を使ってPython用のパッケージをインストールします。

STEP
インストール可能なバージョンを調べる。

次のように入力するとインストール可能なバージョンがリストアップされます。

pip3 install opencv-python==
Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement opencv-python== (from versions: 3.4.0.14, 3.4.10.37, 3.4.11.39, 3.4.11.41, 3.4.11.43, 3.4.11.45, 3.4.13.47, 3.4.15.55, 3.4.16.57, 3.4.16.59, 3.4.17.61, 3.4.17.63, 3.4.18.65, 4.3.0.38, 4.4.0.40, 4.4.0.42, 4.4.0.44, 4.4.0.46, 4.5.1.48, 4.5.3.56, 4.5.4.58, 4.5.4.60, 4.5.5.62, 4.5.5.64, 4.6.0.66)
ERROR: No matching distribution found for opencv-python==

この例では最新版は4.6.0.66です。

STEP
インストールする

最新版をインストールします。STEP 1で調べた4.6.0.66をインストールします。

pip3 install opencv-python==4.6.0.66

OpenCVの拡張モジュールをインストールする

OpenCVの拡張モジュールをインストールします。OpenCVと同様にpip3を使ってインストールします。

STEP
インストール可能なバージョンを調べる。

次のように入力するとインストール可能なバージョンがリストアップされます。

pip3 install opencv-contrib-python==
Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement opencv-contrib-python== (from versions: 3.4.11.45, 3.4.13.47, 3.4.14.51, 3.4.15.55, 3.4.16.59, 3.4.17.61, 3.4.17.63, 3.4.18.65, 4.4.0.46, 4.5.1.48, 4.5.2.52, 4.5.3.56, 4.5.4.58, 4.5.4.60, 4.5.5.62, 4.5.5.64, 4.6.0.66)
ERROR: No matching distribution found for opencv-contrib-python==
STEP
インストールする

OpenCVと同じバージョンをインストールします。STEP 1でOpenCVと同じ4.6.0.66がインストールできることを確認できているので、4.6.0.66を指定してインストールします。

pip3 install opencv-contrib-python==4.6.0.66

Matplotlibをインストールする

MatplotlibはPythonでグラフを描画するときに利用するライブラリです。Matplotlibがインストールされていない環境でMatplotlibを使おうとすると、次のようなエラーが表示されます。

    from matplotlib import pyplot as plt
ModuleNotFoundError: No module named 'matplotlib'

pip3でインストールします。

pip3 install matplotlib

バージョンを指定することもできます。特に指定しないときは最新版がインストールされます。

QtのPythonバインディングをインストールする

OpenCVのcv2.imshow()などを使ったときに、QtのPythonバインディングがインストールされていないと次のようなエラーが表示されます。

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/akira/.local/lib/python3.10/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb.

Aborted

QtのPythonバインディングをインストールします。次のようaptでQt5のPython3バインディングをインストールします。

sudo apt install python3-pyqt5

著書紹介

Authored Books

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次