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行列あたりで。