回答編集履歴

2

d

2019/04/05 09:48

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -98,14 +98,24 @@
98
98
 
99
99
  ```python
100
100
 
101
+ def concat(imgs):
102
+
103
+ return np.vstack([np.hstack(h) for h in imgs])
104
+
105
+
106
+
107
+ # all_imgs は (22500, 66, 66, 3) という形状であることが前提
108
+
109
+ # 形状を (22500, 66, 66, 3) から (-1, 1, 15, 66, 66 ,3) に変更する。
110
+
101
111
  all_imgs = all_imgs.reshape((-1, 1, 15, 66, 66 ,3))
102
112
 
103
- for imgs in all_imgs:
113
+ for i, imgs in enumerate(all_imgs):
104
114
 
105
115
  # imgs は (1, 15, 66, 66 ,3) という形状
106
116
 
107
117
  merged = concat(imgs)
108
118
 
109
- cv2.imwrite('ファイル名', merged)
119
+ cv2.imwrite('{}.png'.format(i), merged)
110
120
 
111
121
  ```

1

d

2019/04/05 09:48

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -79,3 +79,33 @@
79
79
 
80
80
 
81
81
  [OpenCV - 画像をグリッド上に分割する方法について](http://pynote.hatenablog.com/entry/opencv-split-image)
82
+
83
+
84
+
85
+ # 追記
86
+
87
+
88
+
89
+ 22500 枚の画像をすべて読みこんで、1つの配列としたら、
90
+
91
+ all_imgs = (22500, 66, 66, 3) という配列になると思います。
92
+
93
+ これを (1500, 15, 1, 66, 66, 3) という配列に reshape します。
94
+
95
+ あとは for で回して、結合→保存を繰り返せばよいです。
96
+
97
+
98
+
99
+ ```python
100
+
101
+ all_imgs = all_imgs.reshape((-1, 1, 15, 66, 66 ,3))
102
+
103
+ for imgs in all_imgs:
104
+
105
+ # imgs は (1, 15, 66, 66 ,3) という形状
106
+
107
+ merged = concat(imgs)
108
+
109
+ cv2.imwrite('ファイル名', merged)
110
+
111
+ ```