さっき撮った写真なんだけど、全体的に暗く写ってしまった…。
明るさを調節したいけど、1つ1つ直すのはめんどう。
PythonのPillowで一気に明るくできないの?
なるほど…。
では今回は、「Pillowで画像の明るさを調節する方法」を
できるだけわかりやすく解説いたします!
また、「複数の画像を明るくする方法」も紹介いたしますので、
ぜひ最後まで読んでいってください。
PythonのPillowで画像の明るさを調節する方法
「ImageEnhance」の「Brightness」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
import PIL
from PIL import Image, ImageEnhance
input_img = Image.open('C:/Utatane/input_img.jpg')
output_img = ImageEnhance.Brightness(input_img).enhance(2)
output_img.save('C:/Utatane/output_img.jpg')
output_img = ImageEnhance.Brightness(input_img).enhance(2)
実行結果
事前準備
- Pillowのインストール
画像を加工したり編集したりするには「Pillow」のインストールが必要です。
Pillowのインストール方法
Pillowを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install Pillow
※Pillowを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、Pillowの簡単な使い方も紹介しておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポートや画像の取り込み・出力方法の解説は、インストールの記事をご参考ください。
画像の明るさを調節
下記コードにて、画像の明るさを調節することができます。
from PIL import Image, ImageEnhance
output_img = ImageEnhance.Brightness(input_img).enhance(2)
1つ1つ解説していきましょう。
from PIL import Image, ImageEnhance
コードの1~2行目はインポートです。
特に2行目に注目してください。
明るさを調節する場合は、「ImageEnhance」のインポートが必要ですので記述しましょう。
「Image」同様、大文字と小文字が混在しているので注意してください。
全部小文字にすると動作しません。
コードの6行目で明るさを調節しています。
output_img = ImageEnhance.Brightness(input_img).enhance(2)
まず新しい変数を書いたら、「=(イコール)」を書きます。
変数については下記記事をご参考ください。
イコールの後ろに、「ImageEnhance.Brightness()」を書きます。
()内には、取り込んだ画像が入った変数を書いてください。
さらに続けて「.enhance()」を書きます。
()内に、明るさを調節する数値を書いたら完了です。
<明るさ調節のテンプレ>
【 変数 = ImageEnhance.Brightness(取り込んだ画像が入った変数).enhance(明るさを調節する数値) 】
【明るさを調節する数値について】
「1」が標準値です。
「0.8や0.1」など「0」に近づくほど暗く、
「1.5や2」など数字が大きくなるほど明るくなります。
視力みたいな感じだという覚え方でOKです。
明るくしたいなら、1.5か2くらいが適切かと思います。
10以上にすると、下図のように真っ白になってしまうのでお気を付けください。
逆に暗くしたい場合は、0.5くらいを中心に微調整してください。
下図は0.5にした場合です。
複数の画像の明るさを調節する方法
下記コードにて、複数の画像を明るくすることができます。
import PIL
from PIL import Image, ImageEnhance
import os
os.makedirs('C:/Utatane/output', exist_ok=True)
for filename in os.listdir('C:/Utatane'):
if filename.endswith('.jpg') :
input_img = Image.open(os.path.join('C:/Utatane', filename))
output_img = ImageEnhance.Brightness(input_img).enhance(2)
output_img.save(os.path.join('C:/Utatane/output', filename))
前項で紹介した方法をfor文で繰り返し、複数の画像を明るくしています。
<コード5行目>
出力するフォルダを作成
<コード7行目~最後>
7行目:取り込みフォルダ内のファイルを取り込み
8行目:拡張子が「jpg」なら以下の操作を行う
9行目:取り込みフォルダのパスとファイル名を連結(フルパスに)して取り込み
10行目:明るさを調節
11行目:出力フォルダパスとファイル名を連結(フルパスに)して出力
これで取り込みフォルダ内のjpg画像が全て明るくできます。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
PythonのPillowで画像の明るさを調節する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!