【Python】Docker で OpenCV 環境構築 ( cv2.imshow() も動く )
以前このような 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. 各種アップデート・インストール
xhost +
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. 動作チェック
ホスト PC で XQuartz 立ち上げる
Jupyter 起動 ( コンテナ内 )
jupyter lab --ip=0.0.0.0 --allow-root --LabApp.token=''
ホスト PC のブラウザで http://localhost:8888/ にアクセス
Jupyter で以下を実行
import cv2
img = cv2.imread('test.jpeg') # なにか適当な画像を入れておく
img.shape # => ( 画像の縦の長さ, 横の長さ, 3 ) が返ってくる
cv2.imshow('img', img) # 画像を表示したいときはこの 3 行セットで実行する
cv2.waitKey(0)
cv2.destroyAllWindows
ホスト PC で XQuartz 立ち上げる
Jupyter 起動 ( コンテナ内 )
jupyter lab --ip=0.0.0.0 --allow-root --LabApp.token=''
ホスト PC のブラウザで http://localhost:8888/ にアクセス
Jupyter で以下を実行
import cv2
img = cv2.imread('test.jpeg') # なにか適当な画像を入れておく
img.shape # => ( 画像の縦の長さ, 横の長さ, 3 ) が返ってくる
cv2.imshow('img', img) # 画像を表示したいときはこの 3 行セットで実行する
cv2.waitKey(0)
cv2.destroyAllWindows
以上がエラーなく動作すれば OK !! お疲れさまでした !!!
Author And Source
この問題について(【Python】Docker で OpenCV 環境構築 ( cv2.imshow() も動く )), 我々は、より多くの情報をここで見つけました https://qiita.com/RyuGotoo/items/3e36622c52beb9d4e932著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .