Python OpenCVチュートリアルメモ


OpenCV-Pythonを始めよう

ここはインストールだけだったので省略

OpenCVのGUI機能

画像を扱う

cv2.imread()
cv2.imshow()
cv2.imwrite()

についての軽い説明だけ。他、動画、描画、マウスでのペイント、カラーパレットは省略・

基本的な処理

画像上の基本的な処理

※ここ重要っぽい

このセクションで仕様する処理はopenCVというよりNumpymに関係しています。最適化されたOpenCVのコードを書くにはNumpyに関する知識が必要になります。

画素値のアクセスと変更方法

カラー画像をimread()で読み込む。
ある画素の行と列の座標を指定することで画素値にアクセス出来ます。
BGR画像の画素値は色成分の値の配列
グレースケールの画像の画素値は明るさの値を返します。

>>> px = img[100,100]
>>> print px
[157 166 200] # 座標:x:100, y:100の[B, G , R]の値

#Blueの数値だけほしい場合
>>> blue = img[100,100, 0] # B:0, G:1, R:1
157

画像の属性情報の取得

>>>img.shape()
(342, 548, 3) # 行数、列数、チャネル数(BGR3つ..?)

>>>img.size() # 画素数

>>> img.dtype # データ型

画像中の注目領域(ROI)

画像の特定の領域に対して何らかの処理をする必要が生じることがあります。画像中から目を検出するときなら、まずは画像全体に対して顔検出を行い、次に検出した顔の内部で目の検出をしますよね。この方法は精度の工場をするとともに、(目の検出は画像中の一部の領域飲みに益陽すればよくなるため)パフォーマンスの向上にもつながります。

ball = img[100:150, 200:250] # top:bottom, left:right で切り抜き

img[200:250, 200:250] = ball # コピー 

画像の色成分の分割と統合

画像の青、緑、赤成分は必要であれば独立した色成分へと分割できます。独立した色成分を統合してBGR画像をもう一度作ることも可能です。

b, g, r = cv2.split(img)
img = cv2.merge((b,g,r))

あ特定の色成分だけ抽出することができる。
b = img[:, :, 0] #x軸範囲(全部) y軸範囲(全部) 0=B
これで全座標のBの数値を配列で取得できる。

設定もできる[:, :, 0] = 0