こんにちは、ヒガシです。
この記事ではpythonを使って、以下の画像を、
このように縦、横方向に等分割する方法をご紹介していきます。
上の画像では縦6枚、横6枚で分割していますが、これらの分割数も自由に変更できるようになっています。
AIに画像を学習させる際のサイズ調整や画像の水増しにぜひご活用ください。
それではさっそくやっていきましょう。
※この作業をpythonというプログラミング言語を用いて実行していきます。インストールから始めたい方は以下からご覧ください。
必要なライブラリ準備
今回はpythonというプログラミング言語を使っていくわけですが、その中でopenCVというライブラリを使用して実行していきます。
openCVのインストール方法については以下の記事で解説しています。
フォルダ構成の確認
以下が今回のフォルダ構成です。
sample.ipg:これから分割される画像データ
split_pic.py:以降で紹介するプログラムが書かれたファイル
split_picフォルダ:分割後の画像が保存されるフォルダ
以降のプログラムのこの構成で動くようになっています。
流用する際は、この構成に整える or プログラムを書き換えてください。
画像分割のサンプルコード
それでは実際のコーディング作業に入っていきましょう。
今回は縦6枚、横6枚に分割するようにコードを書きました。
#ライブラリのインポート
import cv2
import numpy as np
#画像の読み込み
img=cv2.imread('sample.jpg',cv2.IMREAD_COLOR)
h,w=img.shape[:2]
split_x=6
split_y=6
#画像の分割処理
cx=0
cy=0
for j in range(split_x):
for i in range(split_y):
split_pic=img[cy:cy+int(h/split_y),cx:cx+int(w/split_x),:]
cv2.imwrite('split_pic/split_y'+str(i)+'_x'+str(j)+'.jpg',split_pic)
cy=cy+int(h/split_y)
cy=0
cx=cx+int(w/split_x)
基本的にはopenCVで画像の配列を読み込み、その配列をfor文を回しながらゴリゴリ処理をして、その処理された配列を再度openCVが画像化するという処理を行っているだけです。
ぜひ一度処理の流れを追いかけてみましょう。
サンプルコードの実行結果
最後にこのサンプルコードを実行してみましょう。
まずは縦6(split_y=6),横6(split_yx=6)での実行結果です。
次に縦4(split_y=4),横4(split_yx=4)での実行結果です。
どちらも問題なく実行できていそうですね。
おわりに
というわけで今回はpython-openCVを使って、画像を指定した分割数で等分割する方法をご紹介しました。
AIに読み込ませるデータ構築の際などにぜひご活用ください。
画像をAIに学習させる手順は以下で詳細解説しています。
興味があればこちらもあわせてご覧ください。
【人工知能】AIに学習させる画像のデータセットを作成する方法
このように、私のブログでは様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント
すみません。
この処理をフォルダ内のすべての画像に一括で適用する方法はございますでしょうか。
よろしくお願いします。
ご質問ありがとうございます。
はい、可能です。
以下のglobを使って、ファイル名を取得し、for文で各ファイルに処理を適用すれば良いと思います(^^)
よろしくお願いします。