数10~数百枚のスクリーンショットを40枚単位で結合したい
とあるアプリのスクリーンショットを自動で定期取得しています。
日によって55枚だったり105枚だったり224枚だったりまちまちです。
iphoneで閲覧できるようにその日ごとに40枚単位で縦一列に結合した画像を
作りたいと思うのですがやり方がわかりません。
その日のスクリーンショットの数がN枚だった場合、
名前でソートされた各スクリーンショットを
「N / 40」 と余りがある場合+1 回(=M回)結合し保存するコードが構想できず困り果てています。
(1)N枚のスクリーンショットが格納されているフォルダから00-39までを結合し保存する
(2)「40-79」「80-119」・・・とM回繰り返す
(3)あまりの部分(224枚だった場合「200-223」)を結合し保存する
どなたかご教示いただけると幸甚に存じます。
全部一括で結合するコードは一応完成しており次の通りです。
```
files = glob.glob("*.png")
img_list = []
for n in range(len(files)):
img_list.append(cv2.imread(files[n]))
im_v = cv2.vconcat(img_list)
cv2.imwrite('■■.png',im_v)
```
これで出力した画像を「np.array_split」で分割しようとするとエラー(OutOfMemoryError)となります。
だいたい100枚を超えると駄目のようです。(結合後で30Mb程度、縦で10万ピクセル以上)
仕方ないので複数回に分けて結合しようと考えました。
その意味で「40枚+端数」は便宜的です。一定サイズ(10Mb程度、端数あり/無し)でもいいと思います。
以上、よろしくお願い致します。