概要
OpenCV で読み込んだ画像を格子状に分割して複数枚の画像にする、また同じサイズの複数枚の画像を格子状に並べて 1 枚の画像にする方法について解説します。
1 枚の画像を格子状に分割して複数枚の画像にする

行数、列数を指定して、分割する場合
OpenCV で読み込んだ画像は 2 次元または 3 次元配列なので、numpy.array_split() を使用して、分割します。
まず indices_or_sections=行数, axis=0
として、画像を行方向に分割します。
In [1]:

次に indices_or_sections=列数, axis=1
として、画像を列方向に分割します。

行数を 5、列数を 7 としたので、全部で 35 枚の画像に分割されました。
分割した画像は output
ディレクトリを作成して、そこに保存します。
In [1]:
In [2]:
35
分割後の画像の大きさを指定して分割する場合
分割後の画像の大きさから、行数、列数を逆算します。
- 行数 = 画像の高さ / 分割後の画像の高さ
- 列数 = 画像の幅 / 分割後の画像の幅
除算の結果は、端数を切り捨てる場合は numpy.floor()、切り捨てない場合は numpy.ceil() を使って整数にします。
それ以外の部分は先のコードと同じです。
In [3]:
20
同じサイズの複数枚の画像を格子状に並べて 1 枚の画像にする
同じサイズの複数枚の画像を格子状に並べて 1 枚の画像にするコードを紹介します。
今回は例として、sklearn.datasets.fetch_openml() で大きさが (28, 28) の 100 枚の手書き数字画像を 10 行 10 列の格子状に並べて、1 枚の画像にします。
In [4]:
(100, 28, 28)
In [5]:

コメント