LoginSignup
1
4

More than 3 years have passed since last update.

【Python】Docker で OpenCV 環境構築 ( cv2.imshow() も動く )

Posted at

以前このような Qiita ( Ubuntu, Python, OpenCV な環境を Docker 上でつくった ) を書いたのですが cv2.imshow() が機能せずいろいろ試行錯誤していました。

この記事では Docker 環境でもちゃんと cv2.imshow() が動くようにする方法を書きます。

ホスト OS は MacOS Catalina です。

1. XQuartz インストール

インストールしたら XQuartz の環境設定からセキュリティタブのネットワーク・クライアントからの接続を許可にチェックを入れる。

2. xhost 開放

xhost +

3. Docker run

docker run -it \
-v $(pwd):/code \
-v ~/.Xauthority:/root/.Xauthority \ # Docker と GUI のやり取りをするために必要
-e DISPLAY=$(hostname):0 \ # Docker と GUI のやり取りをするために必要
-p 8888:8888 \ # Jupyter 用
--name opencv \ 
ubuntu /bin/bash

4. 各種アップデート・インストール

コンテナ内で以下を実行

apt-get -y update && apt-get -y upgrade && \
apt-get -y install python3-pip vim libgl1-mesa-dev libgtk2.0-dev && \
pip3 install numpy opencv-python jupyterlab pandas matplotlib scikit-learn seaborn scipy

5. 動作チェック

  1. ホスト PC で XQuartz 立ち上げる

  2. Jupyter 起動 ( コンテナ内 )

jupyter lab --ip=0.0.0.0 --allow-root --LabApp.token=''
  1. ホスト PC のブラウザで http://localhost:8888/ にアクセス

  2. Jupyter で以下を実行

import cv2

img = cv2.imread('test.jpeg') # なにか適当な画像を入れておく
img.shape # => ( 画像の縦の長さ, 横の長さ, 3 ) が返ってくる

cv2.imshow('img', img) # 画像を表示したいときはこの 3 行セットで実行する
cv2.waitKey(0)
cv2.destroyAllWindows

以上がエラーなく動作すれば OK !! お疲れさまでした !!!

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4