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)