コンテナでPython+OpenCvを動かしたい
今回はPython+OpenCv(画像処理ライブラリ)の実行環境をコンテナ上に作成してみます。
ローカルPC(windows)上ではなく、コンテナで作成することで、
・使いたい時だけ立ち上げて
・いらなくなったら停止しておく
という事が可能になります。
※特にPythonは色んなプロジェクト開発をしていると、複数のバージョンが混在することが多く管理が面倒(筆者の管理がヘタクソなだけ?)になるので、コンテナ化してスッキリさせたい、と以前から考えてました。
コンテナのベースイメージの用意
Docker DesktopのコンテナモードはWSL2にしていますが、ベースとするコンテナイメージとしてUbuntu20.04を使っていきます。ローカルPCのコンソールから以下コマンドでpullしてきました。
docker pull ubuntu:20.04
pullが完了したら、Dockerダッシュボードからイメージを起動します。
メニューの「Images」からUbuntuのイメージをRUNします。
RUN時に起動オプションが指定できるので、
Container Name:ubuntu20.04_python3
Host Path :D:\Docker_workspace\ubuntu20.04_python3\src
Container Path :/usr/local/python
としました。HostPath、ContainerPathを指定しています。これはHost(ローカルPC)上に、実行したいPythonコードや画像リソースを配置し、コンテナ側はそのフォルダを「/usr/local/python」にマウントする、という指示です。
コンテナ内部にPython・OpenCv環境を構築
起動したイメージからコンテナに入って作業します。メニューの「Containers/Apps」からUbuntuコンテナの「CLI」ボタンを押すとコンソールが立ち上がります。
コンソールから以下コマンドを順に実行します。
※大量に取得するパッケージ・ライブラリがあるのでかなり時間がかかります
apt update -y && apt upgrade -y
apt install -y python3
apt install -y python3-dev python3-pip python3-setuptools
python3 -m pip install --upgrade pip setuptools
apt install -y libopencv-dev opencv-data
python3 -m pip install numpy
python3 -m pip install opencv-python
途中、「libopencv-dev opencv-data」のインストール中にタイムゾーンを選択するため入力待ちになる箇所があります。テスト用の環境なのでなんでもいいですが、現在の地域に合わせて指定します。
全て成功すれば準備完了です。
コンテナからPythonとOpenCvのバージョン確認をします。
python3
>>> import cv2
>>> cv2.__version__
Python3.8.5、OpenCv4.5.1がインストールされました。
テストコード準備
以下の内容でコードを用意します。保存先はコンテナ起動時にオプションで指定した
Host Pathに、「grayscale.py」というファイル名で作成しました。
コードは以下です。
import cv2
img_bgr = cv2.imread('lena.jpg')
img_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY)
cv2.imwrite('lena_gray.jpg', img_gray)
簡単に説明すると
・「cv2.imread」で画像ファイル読み込み
・「cv2.cvtColor」でグレースケール変換
・「cv2.imwrite」でファイル保存
となります。
また、処理に使うサンプル画像も同フォルダに置いておきます。以下から取得しました。
https://github.com/opencv/opencv/tree/master/samples/data/lena.jpg
コード実行
コンテナのコンソールから、以下コマンドを実行します。
cd /usr/local/python
python3 grayscale.py
コマンド実行後にHost Pathを確認すると、「lena_gray.jpg」が作成されました。ちゃんとグレースケール変換に成功しています。
OpenCvを動作させることに成功しました。
今回はWindows上に、コンテナで動作するUbuntu+Python+OpenCv環境を作成してみました。
OpenCvをコンテナで動かす際、依存関係のインストールが不足していたりと少々苦戦する部分があります。ですが一度コンテナとして環境を作成してしまえば、そのイメージを配布することで環境作成にかかる時間をかなり削減することができます。今回はCLIからコマンドで環境作成しましたが、それをDockerfileなどに定義するようにすれば、一部設定を変えたりライブラリのバージョンを変えたい場合などにも簡単に変更できるため、便利です。
次回も引き続き、Python+OpenCv環境を扱っていきたいと思います。
株式会社 パブリックリレーションズ 〒064-0807 北海道札幌市中央区南7条西1丁目13番地 弘安ビル5階 011-520-1800 011-520-1802