dockerで画像処理用コンテナをパッと作る。
Dockerfile
FROM jupyter/base-notebook
USER root
RUN apt-get update -y && apt-get install -y python-opencv
USER jovyan
RUN pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master \
jupyter_nbextensions_configurator pillow opencv-python
RUN jupyter contrib nbextension install --user && jupyter nbextensions_configurator enable --user
詳細は以下に
- ベースのイメージはjupyter公式の最もベーシックなものです。 → jupyter/base-notebook
- このimageを起動すると
jovyan
ユーザーでnotebookが起動されるので、apt
等でシステム側に必要なパッケージをインストールしてます。例としpython-opencv
をインストールしてますが、必要なものをインストールしてください。 - 便利そうなので、nbextensions周りをインストールしてます。
起動
Dockerfile
を置いたディレクトリに移動して、
build ※Dockerfile
を変更をしない限りは一度だけ実行すればOKです。
docker build -t jupyter_blog .
run
docker run -it --rm -v $PWD:/home/jovyan/work --name jupyter_blog -p 8888:8888 jupyter_blog
詳細は以下
-
jupyter_blog
という名前をつけてbuildしてます。 - カレントディレクトリをdocker内の
/home/jovyan/work
にマウントしてます。使う画像ファイルとか.ipynb
ファイルとかをここに入れて使ってます。 - あとは起動後に、
http://localhost:8888/?token=****************
というようなURLが出力されるので、このURLにアクセスするとOKです。
処理例
from IPython.display import display
from PIL import Image
import cv2
import numpy as np
img = Image.open('myicon.jpg')
display(img)
_img = np.asarray(img)
_img = cv2.GaussianBlur(_img, (45, 1), 0)
display(Image.fromarray(_img))