前提・実現したいこと
以前の質問でエラーが出ないけど処理された画像が指定したフォルダに保存されない複数の画像を処理するプログラムについて質問しました。
以前の質問からprintを使って以下のように記述して実行してみました。
該当のソースコード
python
1import glob 2import cv2 3for fname in glob.glob("Desktop/clusterling/image/picture*.jpg"): 4 image = cv2.imread(fname) 5 print (image) 6 7 image_mask = cv2.inRange(image, (108,64,155),(255,125,255)) 8 cv2.imwrite("Desktop/clusterling/mask/picture%s.jpg" % fname, image_mask) 9 print('Desktop/clusterling/mask/picture%s.jpg' % fname, image_mask) 10 11 out = cv2.bitwise_and(image, image, mask = image_mask) 12 cv2.imwrite("Desktop/clusterling/red/picture%s.jpg" % fname, out) 13 print(esktop/clusterling/red/picture%s.jpg" % fname, out)
すると以下のように表示されました。
長いので省略して記述します。
[[[148 146 165] [147 145 164] [148 146 165] ... [149 123 123] [145 119 119] [146 120 120]] [[151 150 166] [148 147 163] [144 142 161] ... [146 122 124] [149 125 127] [152 128 130]] [[151 148 163] [149 146 161] [145 142 158] ... [156 133 141] [157 135 140] [170 150 155]] ... [[198 182 199] [206 190 207] [201 188 204] ... [246 224 226] [245 222 226] [247 224 228]] [[203 189 207] [206 193 209] [202 186 203] ... [246 225 227] [247 225 227] [245 223 225]] [[203 189 207] [203 189 207] [204 188 205] ... [246 225 227] [248 226 228] [248 226 228]]] Desktop/clusterling/mask/pictureDesktop/clusterling/image\picture4.jpg.jpg [[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]] Desktop/clusterling/red/pictureDesktop/clusterling/image\picture4.jpg.jpg [[[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] [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]]] PS Desktop\clusterling>
試したこと
ここで、別でforを作ればいいと思い以下のように10回forループするようにしてみました。
python
1import glob 2import cv2 3for fname in glob.glob("Desktop/clusterling/image/picture*.jpg"): 4 image = cv2.imread(fname) 5 print (image) 6 7 for i in range(10) 8 image_mask = cv2.inRange(image, (108,64,155),(255,125,255)) 9 cv2.imwrite("Desktop/clusterling/mask/picture%s.jpg" % i, image_mask) 10 print('Desktop/clusterling/mask/picture%s.jpg' % i, image_mask) 11 12 out = cv2.bitwise_and(image, image, mask = image_mask) 13 cv2.imwrite("Desktop/clusterling/red/picture%s.jpg" % i, out) 14 print(esktop/clusterling/red/picture%s.jpg" % i, out) 15
すると、処理された画像が指定したフォルダに保存されるようになりましたが、1枚目を処理したものが10枚保存されそのあとに2枚目に処理された画像10枚が1枚目に処理した画像を上書きする...というのを繰り返され最終的に10枚目を処理した画像が10枚になるだけになってしまいました。
for i in range(10)を入れることで処理した画像が保存されたので、おそらくこの部分に別のコードを入力すれば自分の思う通りに10枚の画像を処理してそれを指定のフォルダに保存するといった流れができるのであと一歩なのですが、ここをどうすればいいか見当が付きません。
なにか記述すべきコードなどがあれば教えていただきたく思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/23 04:39
2021/12/23 04:42
2021/12/23 05:08
2021/12/23 05:16
2021/12/23 05:33