googlecollavoratory利用。
python
1from google.colab import drive 2drive.mount('/content/drive') 3 4import numpy as np 5from PIL import Image 6 7# PILで開いたうえでデータをNumpy形式にする 8# (例えばJPEGは圧縮されていてNumpyな配列になっていないので、 9# そこからNumpyのデータ空間(?)に持ってくる必要がある) 10img = np.asarray(Image.open("drive/My Drive/mnist_dataset/rei.jpg")) 11 12# 元画像のshape (PILではchはRGB) 13# print(img.shape) 14 15# カラー画像の時Gだけ抜き取りたい 16if len(img.shape) ==3: 17 h, w, ch = img.shape 18 19 # RGBのGだけ抜き取りたい 20 img_g = img[:,:,1] 21 22v_max, v_min,imgrows, lenrows, imgcolumns, lencolumns = 250, 200, [], [], [], [] 23 24for img in img_g: 25 rows = img[(v_min<img)&(v_max>img)] 26 columns = img.T[(v_min<img.T)&(v_max>img.T)] 27 imgrows.append(rows) 28 lenrows.append(len(rows)) 29 imgcolumns.append(columns) 30 lencolumns.append(len(columns)) 31 32print(lenrows) 33print(lencolumns) 34 35for (img, imgt) in zip(img_g, img_g.T): 36 rows = img[(v_min<img)&(v_max>img)] 37 columns = imgt[(v_min<imgt)&(v_max>imgt)] 38 imgrows.append(rows) 39 lenrows.append(len(rows)) 40 imgcolumns.append(columns) 41 lencolumns.append(len(columns)) 42 43print(lenrows) 44print(lencolumns) 45 46print(img_g.shape) 47print(img_g.T.shape)
出力結果
Mounted at /content/drive
[0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3]
[0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3]
[0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3, 0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3]
[0, 1, 1, 1, 85, 1, 3, 2, 3, 2, 0, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(79, 126)
(126, 79)
で、画像を行列形式で、img_gに読み込んだ後・・・なんですが、
元のデータと転置データについて、各、
rows = img[(v_min<img)&(v_max>img)]
columns = img.T[(v_min<img.T)&(v_max>img.T)]
の処理をしたいのですが、
なぜかどちらも前半部分については同じ結果になり(前半がずっと同じになるのはおかしい)、後半がも思った結果になりません。。
forのみのパターン、zipを使ったパターン、試しましたら、4個とも同じ結果になります、
転置してるのに、なぜでしょう。
自分は、ある範囲内の数字の「個数」を数えたい、転置前については問題なくできているのですが、
転置をすると、初めの方は0のみの行列ばかりになるため、範囲内の数字の個数は「0」が続くはずなのですが、そうなっていません。。
ちなみに取り込んだ画像(rei.jpg)は、
で、
取り込んだカラーコードのGだけをとった行列(転置前)の一部は以下です。
[[ 0 0 0 0 0 0 0 0 32 43 36 39 36 38 37 40 39 36
38 38 38 38 39 38 38 38 38 38 38 38 38 38 38 38 38 38
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38
38 38 38 38 38 38 39 37 38 40 39 36 41 30 0 0 1 0
0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 231 255 255 255 254 255 255 255 251 255
255 251 255 253 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 254 253 255 252 251 255 254 172 0 0 1 0
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 210 250 255 254 252 255 253 253 255 255
255 254 255 255 254 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 252 255 160 1 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 206 254 255 255 254 255 254 255 254 252
255 255 255 255 254 253 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 252 255 254 252 255 255 254 158 1 1 0 3
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
[ 0 0 0 0 0 0 0 0 208 255 255 254 254 255 253 255 255 255
251 202 210 212 213 214 214 214 214 214 214 214 214 214 214 214 214 214
214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214
214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214
214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214 214
214 214 214 214 214 214 212 212 214 213 210 217 218 145 0 2 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 209 255 254 255 255 255 254 255 253 251
255 0 3 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 2 0 0 4 0 135 156 153 154
152 154 153 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154]
[ 0 0 0 0 0 0 0 0 209 254 254 255 255 255 255 255 254 255
247 0 3 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 0 2 0 0 2 0 0 4 218 255 255 254
253 255 253 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254]
[ 0 0 0 0 0 0 0 0 208 254 255 255 254 254 255 255 255 253
255 1 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 2 0 1 0 1 0 0 1 207 254 255 255
254 255 253 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[ 0 0 0 0 0 0 0 0 206 254 255 252 255 255 255 255 255 249
255 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 3 0 3 0 1 0 3 207 255 255 253
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[ 0 0 0 0 0 0 0 0 227 252 255 255 255 253 251 255 255 255
252 3 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 3 0 0 225 255 255 254
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[ 0 0 0 0 0 0 0 0 38 40 36 36 36 38 35 38 32 39
53 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 4 2 0 5 0 51 63 59 59
61 60 58 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60]
[ 0 0 0 0 0 0 0 0 228 251 255 255 252 254 255 255 255 255
255 76 255 255 255 253 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 252 253 254 248 183 1 1 0 0
1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
・・・(以下略)
これは解決難しいですかね・・・?
回答1件
あなたの回答
tips
プレビュー