各行について、その個数の和を求めてlistに格納したいのです。
例えば、250~300の範囲内にある数字が、1行目に10個あれば、10、
2行目に20個あれば、20・・・
(10,20・・・
という風に。
自分が書いたコードは以下です、Google collavoratory使用。
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 img_b = img[:,1,:] 22 img_r = img[1,:,:] 23 24np.set_printoptions(threshold=1000) 25print(img) 26 27v_max, v_min, gimgrows, glenrows, gimgcolumns, glencolumns = 300, 200, [], [], [], [] 28 29for (img, imgt) in zip(img_g, img_g.T): 30 rows = img[(v_min<img)&(v_max>img)] 31 columns = imgt[(v_min<imgt)&(v_max>imgt)] 32 gimgrows.append(rows) 33 glenrows.append(len(rows)) 34 gimgcolumns.append(columns) 35 glencolumns.append(len(columns)) 36 37print(glenrows) 38print(glencolumns) 39 40bimgrows, blenrows, bimgcolumns, blencolumns = [], [], [], [] 41 42for (img, imgt) in zip(img_b, img_b.T): 43 brows = img[(v_min<img)&(v_max>img)] 44 bcolumns = imgt[(v_min<imgt)&(v_max>imgt)] 45 bimgrows.append(brows) 46 blenrows.append(len(brows)) 47 bimgcolumns.append(bcolumns) 48 blencolumns.append(len(bcolumns)) 49 50print(blenrows) 51print(blencolumns) 52 53rimgrows, rlenrows, rimgcolumns, rlencolumns = [], [], [], [] 54 55for (img, imgt) in zip(img_r, img_r.T): 56 rrows = img[(v_min<img)&(v_max>img)] 57 rcolumns = imgt[(v_min<imgt)&(v_max>imgt)] 58 rimgrows.append(rrows) 59 rlenrows.append(len(rrows)) 60 rimgcolumns.append(rcolumns) 61 rlencolumns.append(len(rcolumns)) 62 63print(rlenrows) 64print(rlencolumns)
出力結果は以下です。
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
[[[243 255 255]
[246 255 255]
[242 255 255]
[232 255 255]
[226 255 255]
[228 255 255]
[211 222 242]
[ 3 0 16]
[ 7 0 12]
[ 6 0 12]
[ 4 0 12]
[ 3 0 9]]
[[139 218 249]
[155 222 241]
[166 216 227]
[174 207 226]
[177 208 239]
[177 214 241]
[155 193 204]
[ 0 7 2]
[ 4 0 0]
[ 11 0 0]
[ 7 0 0]
[ 1 1 0]]
[[ 0 158 236]
[ 42 147 195]
[ 91 101 128]
[132 82 111]
[135 78 123]
[118 87 128]
[109 91 107]
[206 166 158]
[252 179 164]
[255 174 162]
[255 177 165]
[249 180 165]]
[[ 0 182 255]
[ 65 147 221]
[163 49 82]
[240 27 47]
[226 22 55]
[201 34 77]
[205 37 73]
[219 21 44]
[230 14 27]
[229 15 27]
[223 16 32]
[223 16 34]]
[[ 0 176 255]
[ 87 141 213]
[219 30 58]
[255 13 5]
[255 15 19]
[253 19 44]
[255 12 44]
[255 12 35]
[255 13 32]
[255 12 37]
[255 11 41]
[255 11 41]]
[[ 0 173 242]
[ 83 142 186]
[158 37 54]
[216 20 21]
[196 21 18]
[179 38 29]
[187 46 28]
[200 46 22]
[196 43 25]
[191 44 37]
[194 42 39]
[199 41 32]]
[[161 255 255]
[187 235 245]
[233 218 225]
[248 196 208]
[253 211 213]
[202 206 171]
[ 79 128 49]
[ 80 146 49]
[ 86 141 58]
[ 95 134 71]
[100 131 72]
[ 98 134 64]]
[[255 228 220]
[255 241 235]
[255 236 243]
[255 239 255]
[255 232 239]
[212 236 200]
[ 54 159 74]
[ 15 171 61]
[ 19 169 69]
[ 33 160 79]
[ 37 158 81]
[ 30 162 76]]
[[203 19 9]
[191 17 16]
[197 23 33]
[202 24 38]
[160 2 3]
[146 53 35]
[125 120 80]
[182 242 190]
[158 238 185]
[159 237 189]
[159 236 192]
[156 237 194]]
[[255 24 24]
[255 18 29]
[255 11 23]
[255 17 17]
[255 16 9]
[233 29 28]
[209 75 84]
[255 234 246]
[255 248 250]
[254 255 249]
[251 255 252]
[255 253 255]]
[[244 25 29]
[247 22 38]
[253 16 36]
[255 14 22]
[255 22 19]
[232 19 25]
[217 63 87]
[255 225 253]
[255 243 255]
[255 251 255]
[255 252 255]
[255 249 255]]]
[7, 6, 0, 0, 0, 0, 5, 6, 5, 5, 5]
[4, 4, 4, 3, 4, 4, 1, 3, 3, 3, 3]
[3, 2, 0]
[4, 4, 6]
[2, 2, 2]
[0, 6, 7]
Gに関しては、転置前、転置後ともに問題なく動いており、Gと同じようなことをB,Rにも行いたいのですが、できていません。
Bなんですが、
[3, 2, 0]
[4, 4, 6]
なわけがなく、その後のRも
[2, 2, 2]
[0, 6, 7]
なわけがないです。
まずなぜ3成分なのか?個数は0なら「0」と表示されるはずです、
そもそも、どちらも、どの行も範囲内の数値は平均して5個ぐらいあるはずです。
以前、変数を使いまわしていたミスがあったのですが、それでしょうか?
どこがおかしいのか説明お願いします。
ちなみに、
python
1 # RGBのGだけ抜き取りたい 2 img_b = img[:,:,1] 3 img_g = img[:,1,:] 4 img_r = img[1,:,:]
とすると、
[3, 2, 0]
[4, 4, 6]
[7, 6, 0, 0, 0, 0, 5, 6, 5, 5, 5]
[4, 4, 4, 3, 4, 4, 1, 3, 3, 3, 3]
[2, 2, 2]
[0, 6, 7]
となるので、Gに関しては正しく出力されているようです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/04/20 08:58
退会済みユーザー
2021/04/20 09:40