【python-openCV】画像を縦、横方向に指定数で等分割する方法!

こんにちは、ヒガシです。

 

この記事ではpythonを使って、以下の画像を、

画像分割に用いるサンプル画像

 

このように縦、横方向に等分割する方法をご紹介していきます。

pythonで画像を分割したあとの結果

上の画像では縦6枚、横6枚で分割していますが、これらの分割数も自由に変更できるようになっています。

 

AIに画像を学習させる際のサイズ調整や画像の水増しにぜひご活用ください。

 

それではさっそくやっていきましょう。

 

※この作業をpythonというプログラミング言語を用いて実行していきます。インストールから始めたい方は以下からご覧ください。

 

スポンサーリンク

必要なライブラリ準備

今回はpythonというプログラミング言語を使っていくわけですが、その中でopenCVというライブラリを使用して実行していきます。

 

openCVのインストール方法については以下の記事で解説しています。

スポンサーリンク

フォルダ構成の確認

以下が今回のフォルダ構成です。

python実行フォルダの構成

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)での実行結果です。

横6、縦6で画像を分割した結果

 

次に縦4(split_y=4),横4(split_yx=4)での実行結果です。

縦4、横4で画像を分割した結果

 

どちらも問題なく実行できていそうですね。

スポンサーリンク

おわりに

というわけで今回はpython-openCVを使って、画像を指定した分割数で等分割する方法をご紹介しました。

AIに読み込ませるデータ構築の際などにぜひご活用ください。

 

画像をAIに学習させる手順は以下で詳細解説しています。

興味があればこちらもあわせてご覧ください。

【人工知能】AIに学習させる画像のデータセットを作成する方法

 

このように、私のブログでは様々なプログラミングスキルを紹介しています。

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村 IT技術ブログへ
にほんブログ村

それではまた!

コメント

  1. 画像処理したい より:

    すみません。
    この処理をフォルダ内のすべての画像に一括で適用する方法はございますでしょうか。

    よろしくお願いします。

タイトルとURLをコピーしました