0
0

OpenAIのDALLE2を用いて透明に塗りつぶした領域を画像生成でインペイントすーる(Python)

Last updated at Posted at 2023-12-12

はじめに

がちもとさんアドベントカレンダー13日目の記事です。
今日は、DALLE2を用いて透明に塗りつぶした領域を画像生成でインペイントしていきます。

開発環境

  • Windows 11 PC
  • Python 3.11

導入

1.ライブラリのインストール
pip install openai
pip install requests

2.OpenAIのAPIキーを取得

3.元画像と透明に塗りつぶした画像を用意します

4.プログラムを作成

image_edit.py
from openai import OpenAI
import requests

client = OpenAI(api_key="<INSERT-YOUR-API-KEY>")

response = client.images.edit(
  model="dall-e-2",
  image=open("image_edit_original.png", "rb"),
  mask=open("image_edit_mask.png", "rb"),
  prompt="A sunlit indoor lounge area with a pool containing a flamingo",
  n=1,
  size="1024x1024"
)
image_url = response.data[0].url
print(image_url)

url_parts = image_url.split('?')
file_name = url_parts[0].split('/')[-1]

response = requests.get(image_url)
if response.status_code == 200:
    with open(file_name, 'wb') as file:
        file.write(response.content)
コード解説

1.APIキーの設定:まず、OpenAIライブラリをインポートし、OpenAIクライアントをAPIキーで初期化します。実際のAPIキーを""の部分に入力する必要があります。

2.画像編集のリクエスト:client.images.editメソッドを使用して、画像の編集をリクエストします。この際、dall-e-2モデルを指定し、編集する元の画像(image_edit_original.png)と編集する部分のマスク(image_edit_mask.png)をアップロードします。また、編集の指示として「日当たりの良い室内のラウンジエリアにフラミンゴがいるプール」というプロンプトを使用し、画像サイズは1024x1024に設定しています。

3.画像URLの取得とダウンロード:リクエストのレスポンスから画像のURLを取得し、そのURLを使用して画像をダウンロードします。URLからファイル名を抽出し、requestsライブラリを使用して画像を取得し、ローカルに保存します。

実験結果

IMAGE MASK OUTPUT
image_edit_original.png image_edit_mask.png img-7yMuJchkFsBiKb54RVp3xhaL.png
woman-2003647_1280.png woman-2003647_1280_mask.png img-9KHFlwBefamrijeXmAjUDhNJ.png

女性の画像は「黒いスーツを着ています」というプロンプトでスーツに着せ替えました。
お疲れさまでした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0