15_ChatGPTだけで完結!キャラクターと背景を簡単合成する驚きの方法
人生に感謝を。シンパクト和 です。
今日は、私が実際にやってみた画像合成の方法をみなさんにシェアします。例えば、あなたのお気に入りのキャラクターを素敵な背景に配置して、自分だけのオリジナル画像を作ってみたいと思ったこと、ありませんか?
私も同じことを考えて、この方法をChatGPTと相談しながら完成させました。
これを読めば、あなたも簡単に挑戦できますよ。
使うのは、ChatGPTです。Pythonというプログラミング言語と「Pillow」という画像処理ライブラリを利用します。プログラミング初心者でもChatGPTのおかけで簡単にできちゃうので、一緒にやってみましょう!
1. 画像を準備しよう!
次に、合成したい画像を2つ準備します。まずはキャラクター画像、そして背景画像です。
キャラクター画像:こちらは、透明な背景の画像(PNG形式)がベストです。背景が透明だと、キャラクター部分だけがきれいに背景に合成されるので見栄えが良くなります。 私の場合は「clipdrop」の「背景を削除」機能を使って、キャラクターの背景をサクッと消しています。clipdropは無料でかなりの画像編集ができてとても便利なので、気になったらチェックしてみてください!(https://clipdrop.co/tools)
背景画像:どんな背景がいいかな?私は海とか街の風景、幻想的なイラストなどを使うのが好きです。自分の好きなものを自由に選んでください。AIで生成した画像もいいですね。
2.失敗例
ChatGPTがAdvanced Data Analysis でなんとかしてくれるだろうと、下記のように適当にやってみました。
2枚の画像を添付して指示入力。
確かに合成してくれた!でもうまくいっていませんね。
3. ChatGPTでコードの中身を検証
from PIL import Image
# 背景画像とキャラクター画像を読み込む
background = Image.open('background_image.jpg') # 背景画像のパス
character = Image.open('character_image.png') # キャラクター画像のパス
# 画像サイズをチェック
bg_width, bg_height = background.size
char_width, char_height = character.size
# キャラクターの位置を決めよう(ここでは左上に配置)
position = (50, 50) # キャラクター画像の位置
# キャラクター画像を背景に貼り付ける(透明部分を考慮して合成)
background.paste(character, position, character) # 第3引数でマスクを指定
# 合成された画像を保存して表示
background.save('combined_image.png')
background.show()
ChatGPTが実行しているコードをChatGPTにコピペして、下記のように要望を伝えて、コードを書き換えてもらいました。
「キャラクターのサイズを変更しないで優先してください。
キャラクターに背景サイズを合わせてください。
背景は必要な部分のみにしてトリミングしてください。」
コードだけでなく、指示文章も適切に整理してもらいました。
4. 書き換えた指示文書+コードで再チャレンジ
キャラクター画像添付前にclipdrop(https://clipdrop.co/tools)などの無料ツールを使用して背景を透過します。png形式の画像にします。
2枚の画像を添付して、下記紹介のプロンプトを貼り付けて実行。
下記を、ChatGPTへコピペして使用すれば、あなたも同じ結果が得られます。
今回のChatGPTプロンプト_プレゼント
キャラクターと背景の合成にあたり、以下の点に注意して調整を行ってください:
キャラクターのサイズを変更せずに優先的に合成すること。
背景画像のトリミングを行い、必要な部分のみに限定してください。キャラクターのサイズに合わせて背景を調整し、不要な部分は除去してください。
色合いについて、キャラクターと背景のバランスを調整して、自然な合成に見えるようにしてください。
合成の際は、キャラクターが背景に対して中央に配置されるようにしてくださいが、適宜配置の調整を検討してください。
from PIL import Image, ImageEnhance
# 背景画像とキャラクター画像のパスを設定
background_path = "path/to/background_image.jpg"
character_path = "path/to/character_image.png"
# 画像を読み込む
background = Image.open(background_path)
character = Image.open(character_path)
# 背景画像のサイズをキャラクターに合わせてトリミング
left = (background.width - character.width) // 2
top = (background.height - character.height) // 2
right = left + character.width
bottom = top + character.height
# 必要部分のみをトリミング
background = background.crop((left, top, right, bottom))
# RGBA変換
background = background.convert("RGBA")
character = character.convert("RGBA")
# 色合いの調整 (オプション)
enhancer = ImageEnhance.Color(background)
background = enhancer.enhance(1.2) # 色合いを調整(例: 1.2倍)
# キャラクター画像を背景画像に配置(中央に配置)
character_position = (
(background.width - character.width) // 2,
(background.height - character.height) // 2
)
# 合成処理
combined_image = Image.alpha_composite(background, Image.new("RGBA", background.size))
combined_image.paste(character, character_position, character)
# 保存または表示
output_path = "path/to/output_image.png"
combined_image.save(output_path)
combined_image.show()
5. お試し!合成結果はどうだった?
さあ、コードを実行してみましょう。合成された画像ができたときの嬉しさは格別です!背景とキャラクターがうまく合成されて、まるでオリジナルのイラストみたいになります。
6. おわりに
どうですか?画像合成って意外と簡単で楽しいですよね!私も最初は「こんなことできるのかな?」って不安でしたが、試してみたら案外できちゃいました。今では色々な背景やキャラクターを組み合わせて、自分だけのオリジナル画像を作るのが楽しくて仕方ないです。
ChatGPTとPythonコードを使うと、画像処理がとっても簡単にできるので、もっといろんなことに挑戦してみてください!例えば、画像をクロップしてみたり、フィルターをかけてみたり、文字を追加してみたり、無限の可能性が広がっています。
ぜひあなたも、自分だけの作品を作って楽しんでみてくださいね!
人生の限りある時間をクリエイティブに。シンパクト和でした。