LoginSignup
20
32

More than 1 year has passed since last update.

VS CodeとDocker ComposeでJupyterを使ってOpenCVで画像処理する開発環境を作った件

Last updated at Posted at 2019-08-16

#目的
Pythonで画像処理がしたくて開発環境を作ろうと思った次第です。
「Docker-composeでJupyter」又は「Docker-composeでOpenCV」を単体でやってる方は多かったけど、同時にやってるのが見つからなかったのと意外と時間かかったので自分用のメモ。
composeにしたのは毎回コマンド打つのが面倒だった。 ← 知識の浅さを露呈?
ついでにVS CodeでJupyterを使う。

一応Githubに置いておきます。
#Dockerfileとdocker-compose.yml
Docker-composeでJupyterLabを簡単構築を参考に(まるマパクり)させてもらってdocker-compose.ymlを追加する。
そのままだとJupyterのimageしか使えないのでDockerfileに移す。

docker-compose.yml
version: '3'
services:
  jupyterlab:
    # これだとJupyterのimageしか使えないのでDockerfileに移す
    # image: jupyter/datascience-notebook:latest
    build: .
    user: root
    environment:
      NB_UID: 1000
      NB_GID: 100
      GRANT_SUDO: "yes"
    volumes:
       - "./work:/home/jovyan"
    privileged: true
    ports:
      - "8888:8888"
    restart: unless-stopped
    command: start.sh jupyter lab --NotebookApp.token=''

Dockerhubからjjanzic/docker-python3-opencvのimageを使う。
jupyter-dockerから使いたいimageをもってくる。

Dockerfile
FROM python:3.7

ARG project_dir=/home/jovyan
WORKDIR $project_dir

FROM jjanzic/docker-python3-opencv

# https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html
FROM jupyter/scipy-notebook:latest

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

あとはdocker-compose build & upでいける。
ちなみに、下記にしたかったがこれだとうまく立ち上がらない。。。
誰か理由を教えてください。。。

Dockerfile(NG)
FROM python:3.7
FROM jupyter/scipy-notebook:latest

ARG project_dir=/home/jovyan
WORKDIR $project_dir

# 他に必要なものを入れる
FROM jjanzic/docker-python3-opencv
RUN pip install opencv-python

#JupyterをVS Codeで使う
Jupyterをブラウザで使う分にはこのままで問題ないが、せっかくならVS CodeでJupyterを使いたい。
VS Codeはローカルを参照しているので、拡張機能Remote - Containersを使ってDockerに入る。
使い方はこちらの方が分かり易くまとめてくれてるので参考にしてDockerを立ち上げる。

VSCodeの左下角をクリックして、Remote-Containers: Open Folder in Containerを選択して、docker-compose.ymlのあるプロジェクトのルートディレクトリを選択しすると立ち上がる
スクリーンショット 2019-08-16 10.52.40.png

普段使っている拡張機能が反映されないので.devcontainer.jsonのextensionsに追加する。

.devcontainer.json
// See https://aka.ms/vscode-remote/devcontainer.json for format details or
// https://aka.ms/vscode-dev-containers/definitions for sample configurations.
{
	"dockerComposeFile": "docker-compose.yml",
	"service": "jupyterlab",
	"workspaceFolder": "/",
	"extensions": [
		"ms-python.python",
		"donjayamanne.jupyter",
		"formulahendry.auto-close-tag",
		"formulahendry.auto-rename-tag",
		"coenraads.bracket-pair-colorizer",
		"dbaeumer.vscode-eslint",
		"msjsdiag.debugger-for-chrome",
		"ms-azuretools.vscode-docker",
		"donjayamanne.githistory",
		"huizhou.githd",
		"eamodio.gitlens",
		"oderwat.indent-rainbow",
		"ms-ceintl.vscode-language-pack-ja",
		"ibm.output-colorizer",
		"ryu1kn.partial-diff",
		"ionutvmi.path-autocomplete",
		"esbenp.prettier-vscode",
		"wallabyjs.quokka-vscode",
		"mechatroner.rainbow-csv",
		"ms-vscode-remote.remote-containers",
		"humao.rest-client",
		"shan.code-settings-sync",
		"shardulm94.trailing-spaces",
		"octref.vetur",
		"vscode-icons-team.vscode-icons",
		"wakatime.vscode-wakatime"
	]
}

ちなみに、ここに書くのは拡張機能の名前の右側にあるやつを追加する。
一発でJsonに吐き出す方法が分からなかったので地道に追加した。
スクリーンショット 2019-08-14 16.14.57.png

#JupyterをVS Codeで使えた
ちなみに、Jupyterを入れると、"#%%"の上に"Run Cell"が出てくるのでクリックすると実行画面が表示される。
スクリーンショット 2019-08-16 10.15.16.png

OpenCVを使ってみる

画像から文字の輪郭を抽出する

出力画像は左から、元画像・2値化・元画像の文字輪郭・2値化画像の文字輪郭
スクリーンショット 2019-11-04 16.38.51.png

20
32
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
20
32