jupyter notebookのインストールの方法と使い方 〜 ノート形式で逐次実行できるpythonエディタ
jupyter notebookとは
ノート形式のpython
グラフもその場で描画可能(Adobeの株価推移)
また、作成したグラフは.png形式になっているため、ドラッグ&ドロップでwordやメール、論文などに添付可能です。論文に添付する場合は、おそらく.epsに変換すると思いますが。
様々な種類のグラフを美しく描画可能
CSV形式から読み込んだデータで相関図を作成したり、温度分布のようなグラフを作ることさえ可能。このグラフはSeabornというライブラリを使用しています。
マークダウン形式に対応
このようにマークダウン形式でかけるので、慣れると普通のノートを取るよりも断然ラク。また、グラフが綺麗にかけてなおかつ作ったらすぐにレポートに貼り付けれるという点が魅力的。
jupyter notebookの始め方
ターミナル上にて実行
- brew install python3 // Python3をインストール
- python3 --version // Python3の確認
- pip3 install --upgrade pip
- pip3 install jupyter
- jupyter notebookと打ち込む
以下、詳細
ターミナルで以下のコマンドを打ちます。python3 --version
これでPython 3.*.**などが返ってくれば問題無いです。(*はなんでもいいので数字)
返ってこない場合、Python3を入れましょう。
brew install python3 // Pythonが入っていない場合
pip3 install --upgrade pip pip3 install jupyter
円形の個数を自動で全て数えてくれるプログラム(おまけ)
楽に正確に物体の個数を調べたい
jupyter上でやった理由は、テスト用の画像を与えた時に本当に正しく個数をカウントできているのかが視覚的に見やすいかなというのが主な点です。また、個数を数えたのちグラフにしたりメモを取ったりするのもjupyter上で行えばレポート時にも記録用にも管理がしやすいからです。
行ったこと
この画像でテストをすることにしました。画像の2値化
白を物体、またはノイズの色とし、黒をそれ以外の色とすると画像処理がしやすくなります。一定以下の大きさの白の要素はノイズ、それ以上は物体という様に分ける基準にもなります。画像のオープニング・クロージング
ノイズを消し、本来は測定できる物体をより明確にして測定しやすくします。今回は幸いにも綺麗な画像を使ったので大丈夫ですが、ノイズ除去には大切になってきます。
2値化され、オープニングされた後の画像
コード
とても汚くわかりづらいですが、直す気力がもう無いです。import os import cv2 import numpy as np import os from matplotlib import pyplot as plt kernel = np.ones((5,5),np.uint8) dir_save =None cnt_emission_number = 0 dir = SAVE_DIRECTORY dir_save = dir if os.path.isdir(dir): file_path = FILE_PATH if not(os.path.isfile(file_path)): break img = cv2.imread(file_path,0) img = cv2.erode(img,kernel,iterations = 1) img = cv2.erode(img,kernel,iterations = 1) img = cv2.dilate(img,kernel,iterations = 1) img = cv2.dilate(img,kernel,iterations = 1) ret,thresh1 = cv2.threshold(img,5,255,cv2.THRESH_BINARY) image = thresh1 cv2.imshow('image',img) k = cv2.waitKey(0) if k == 27: # wait for ESC key to exit cv2.destroyAllWindows() elif k == ord('s'): # wait for 's' key to save and exit cv2.imwrite('messigray.png',img) // select img you want to show cv2.destroyAllWindows() img_copy = np.copy(thresh1) contours = cv2.findContours(img_copy, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[1] min_coin_area = 1 large_contours = [cnt for cnt in contours if cv2.contourArea(cnt) > min_coin_area] cnt_emission_number += len(large_contours) if os.path.isdir(dir): print(dir_save + " " + str(cnt_emission_number))
出力結果は9となったため、おそらくうまく動いていると思います。