teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

d

2019/04/05 09:48

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -48,9 +48,14 @@
48
48
  あとは for で回して、結合→保存を繰り返せばよいです。
49
49
 
50
50
  ```python
51
+ def concat(imgs):
52
+ return np.vstack([np.hstack(h) for h in imgs])
53
+
54
+ # all_imgs は (22500, 66, 66, 3) という形状であることが前提
55
+ # 形状を (22500, 66, 66, 3) から (-1, 1, 15, 66, 66 ,3) に変更する。
51
56
  all_imgs = all_imgs.reshape((-1, 1, 15, 66, 66 ,3))
52
- for imgs in all_imgs:
57
+ for i, imgs in enumerate(all_imgs):
53
58
  # imgs は (1, 15, 66, 66 ,3) という形状
54
59
  merged = concat(imgs)
55
- cv2.imwrite('ファイル名', merged)
60
+ cv2.imwrite('{}.png'.format(i), merged)
56
61
  ```

1

d

2019/04/05 09:48

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -38,4 +38,19 @@
38
38
  cv2.imwrite('merged.png', merged)
39
39
  ```
40
40
 
41
- [OpenCV - 画像をグリッド上に分割する方法について](http://pynote.hatenablog.com/entry/opencv-split-image)
41
+ [OpenCV - 画像をグリッド上に分割する方法について](http://pynote.hatenablog.com/entry/opencv-split-image)
42
+
43
+ # 追記
44
+
45
+ 22500 枚の画像をすべて読みこんで、1つの配列としたら、
46
+ all_imgs = (22500, 66, 66, 3) という配列になると思います。
47
+ これを (1500, 15, 1, 66, 66, 3) という配列に reshape します。
48
+ あとは for で回して、結合→保存を繰り返せばよいです。
49
+
50
+ ```python
51
+ all_imgs = all_imgs.reshape((-1, 1, 15, 66, 66 ,3))
52
+ for imgs in all_imgs:
53
+ # imgs は (1, 15, 66, 66 ,3) という形状
54
+ merged = concat(imgs)
55
+ cv2.imwrite('ファイル名', merged)
56
+ ```