らんだむな記憶

blogというものを体験してみようか!的なー

OpenCV(2)

cv2.imread の動きを見てみたい。
画像とビデオの読み込みと書き込み — opencv v2.1 documentationによると、第2引数はグレースケール or 3チャンネルかを制御できる。

I = [0,255]とする。

import sys
import cv2
img = cv2.imread(sys.argv[1], 0)
print img

の結果:

[[50 49 54 ..., 57 71 72]
 [50 55 55 ..., 74 75 62]
 [48 57 54 ..., 97 88 66]
 ..., 
 [29 30 29 ..., 29 35 28]
 [28 30 30 ..., 28 34 30]
 [26 30 32 ..., 25 31 28]]

Mat(m,n;I)とでも言うべき行列が得られた。Iに値をとる成分を持つ mxn行列。
0(黒)~255(白)のグレースケールの情報だけなので、I=I1の行列。

次は3チャンネル分の情報を取得。

import sys
import cv2
img = cv2.imread(sys.argv[1], 1)
print img

の結果:

[[[ 43  49  54]
  [ 42  48  53]
  [ 47  53  58]
  ..., 
  [ 52  57  60]
  [ 66  69  77]
  [ 67  69  79]]

 [[ 43  49  54]
  [ 48  54  59]
  [ 48  54  59]
  ..., 
  [ 69  74  77]
  [ 70  73  81]
  [ 57  59  69]]

 [[ 41  47  52]
  [ 50  56  61]
  [ 47  53  58]
  ..., 
  [ 92  97 100]
  [ 83  87  92]
  [ 61  63  73]]

 ..., 
 [[ 24  28  33]
  [ 25  29  34]
  [ 24  28  33]
  ..., 
  [ 22  28  35]
  [ 28  34  41]
  [ 21  27  34]]

 [[ 23  27  32]
  [ 25  29  34]
  [ 25  29  34]
  ..., 
  [ 21  27  34]
  [ 27  33  40]
  [ 23  29  36]]

 [[ 21  25  30]
  [ 25  29  34]
  [ 27  31  36]
  ..., 
  [ 18  24  31]
  [ 24  30  37]
  [ 21  27  34]]]

Mat(m,n;I3)とでも言うべき行列が得られた。I3に値をとる成分を持つ mxn行列。
RGBの3チャンネル分の情報を持つので、I3というように3次元になった。これをmxnx3行列と表現しても良いかもしれないけど、自分にはちょっと辛い。やはり、I3値mxn行列あたりで。