見出し画像

【日記#21】「Python」で一気に画像分割

ショップ開店は間に合いませんでした。すいません。
明日には開店できると思います。

したがって、別の内容にします。

「Midjourney」で生成すると4つの画像が繋がった状態で生成されます。

以下の記事に書いてある通り、「Midjourney」で分割する方法があるのですが


いちいち分割したり、4回ダウンロードするのが手間だと感じてしまったので、
プログラムで一気に分割したらいいと思いました。

画像処理はどの言語がいいかサッと検索すると一番上に以下の記事がヒット!

読んで選んだ言語はPython!!!

このキャラはバイソン

https://www.streetfighter.com/5/ja-jp/sp/chara_bison.html

これはバイ・パイソン

https://www.battlespirits.com/mydeck/deckapp.html?free=バイ・パイソン

https://batspi.com/index.php?バイ・パイソン


これがpython!!!


ということで、コードを書くためにググりました。
そして、良さそうな記事が見つかりました!

引用して参考に書いたコードがこちらになります。

#ライブラリのインポート
import cv2
import numpy as np
import glob
import os

#カレントディレクトリからの相対パス(文頭の"./" 等は省略)
input_folderpath = "入力画像の相対パス"
output_folderpath = "出力画像の相対パス"

files = glob.glob("./" + input_folderpath + "/*")
files = sorted(files, key=lambda f: os.stat(f).st_mtime)
for file in files:
    filename = os.path.basename(file)
    #画像の読み込み
    img=cv2.imread(input_folderpath + '/' + filename,cv2.IMREAD_COLOR)
    h,w=img.shape[:2]
    split_x=2
    split_y=2
    #画像の分割処理
    cx=0
    cy=0
    for j in range(split_y):
        for i in range(split_x):
            split_pic=img[cy:cy+int(h/split_y),cx:cx+int(w/split_x),:]
            cv2.imwrite(output_folderpath + '/' + filename + str(j) + '_x' + str(i) + '.png',split_pic)
            cx=cx+int(w/split_x)
        cx=0
        cy=cy+int(h/split_y)

実行すると、相対パスで指定したフォルダーにある画像が全て4分割されます。

以下の画像が分割前後の画像です。



上記のように一発で何枚でも分割できるのは便利です!

私はMacユーザなので、「Automator」のクイックアクションで実装した方が便利だと思われますが、それはまたの機会に実装したいと思います。

それでは次の投稿もお楽しみに!!!

いいなと思ったら応援しよう!