jupyter で opencv を試してみる
OpenCV を触ってみたくなったので Docker環境を用意してみました。
以下のページなどを参考にして環境を作ってみました。
わかりやすい記事に感謝。
■参考ページ
http://www.task-notes.com/entry/20151129/1448794509
http://qiita.com/donksite/items/f500d301bc192efcec70
■環境準備
Dockerがインストールされていることが前提です。
準備したDockerImageを以下のコマンドでPullします
docker pull moremagic/jupyter:opencv
pull したらおもむろに起動!
docker run -d -p 8888:8888 moremagic/jupyter:opencv
■データ準備
レナさんの画像、顔検出のためのデータをこの辺からDLします
http://www-2.cs.cmu.edu/~chuck/lennapg/lena_std.tif
https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_alt.xml
■jupyter にアクセスします
http://localhost:8888
■画像表示
データをアップロードして
Python3 で以下のコードを実行します。
%matplotlib inline import cv2 # opencv import matplotlib.pyplot as plt # matplotlibの描画系 fn_img = "lena_std.tif" # レナさんの画像ファイル名 img = cv2.imread(fn_img) # レナさんの画像を読み込む # opencvの処理系では (B,G,R) で管理されているが、 # matplotlib では (R,G,B) で画像を認識するので、 # 表示用に一旦変換する show_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(show_img) #表示
■顔認識
%matplotlib inline import cv2 # opencv import matplotlib.pyplot as plt # matplotlibの描画系 fn_img = "lena_std.tif" # レナさんの画像ファイル名 img = cv2.imread(fn_img) # レナさんの画像を読み込む img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # グレースケール化 # cascade の学習結果は https://github.com/Itseez/opencv/tree/master/data/haarcascades から落とせる cascade_path = "haarcascade_frontalface_alt.xml" cascade = cv2.CascadeClassifier(cascade_path) # カスケード分類器を作成 facerect = cascade.detectMultiScale(img_gray, scaleFactor=1.1, minNeighbors=1, minSize=(10,10)) # 顔認識 img_result = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 出力結果用にコピー & RGB化 rect_color = (0, 255, 0) # 矩形の色 (B=0, G=255, R=0) if len(facerect) > 0: for rect in facerect: # 検出範囲を矩形で囲む cv2.rectangle(img_result, tuple(rect[0:2]), tuple(rect[0:2] + rect[2:4]), rect_color, thickness=2) plt.imshow(img_result)
moremagic
2016-08-17