さっき撮った写真なんだけど、明暗がはっきりしてなくて物足りない…。
Pillowで簡単に画像のコントラストを変更できないの?
なるほど…。
では今回は、「Pillowで画像のコントラストを変更する方法」を
できるだけわかりやすく解説いたします。
また、「複数の画像のコントラストを一括で変更する方法」
も紹介いたしますので、ぜひ最後まで読んでいってください。
PythonのPillowで画像のコントラストを変更する方法
「ImageEnhance」の「Contrast」を使います。
まずは全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
import PIL
from PIL import Image, ImageEnhance
input_img = Image.open('C:/Utatane/input_img.jpg')
output_img = ImageEnhance.Contrast(input_img).enhance(2)
output_img.save('C:/Utatane/output_img.jpg')
output_img = ImageEnhance.Contrast(input_img).enhance(2)
実行結果
事前準備
- Pillowのインストール
画像を加工したり編集したりするには「Pillow」のインストールが必要です。
Pillowのインストール方法
Pillowを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install Pillow
※Pillowを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、Pillowの簡単な使い方も紹介しておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポートや画像の取り込み・出力方法の解説は、インストールの記事をご参考ください。
コントラストを変更
下記コードにて、コントラストを変更することができます。
from PIL import Image, ImageEnhance
output_img = ImageEnhance.Contrast(input_img).enhance(2)
1つ1つ解説していきましょう。
from PIL import Image, ImageEnhance
コードの1~2行目はインポートです。
特に2行目に注目してください。
コントラストを変更するには、「ImageEnhance」のインポートが必要です。必ず記述しましょう。
「Image」同様、大文字と小文字が混在しているので注意してください。
全部小文字にすると動作しません。
コードの6行目でコントラストを変更しています。
output_img = ImageEnhance.Contrast(input_img).enhance(2)
まず新しい変数を書いたら、「=(イコール)」を書きます。
変数については下記記事をご参考ください。
イコールの後ろに、「ImageEnhance.Contrast()」を書きます。
()内には、取り込んだ画像が入った変数を書いてください。
さらに続けて「.enhance()」を書きます。
()内に、コントラストを変更する数値を書いたら完了です。
これで画像のコントラストを変更することができます。
明るさを調節することで、さらに明暗がはっきりする場合があります。
明るさ調整方法は下記記事をご参考ください。
<コントラスト変更のテンプレ>
【 変数 = ImageEnhance.Contrast(取り込んだ画像が入った変数).enhance(コントラストを変更する数値) 】
【コントラストを変更する数値について】
「1」が標準値です。
「0.8や0.1」など「0」に近づくほどコントラスト(明暗)が弱くなり、
「1.5や2」など数字が大きくなるほど強くなります。
視力みたいな感じだという覚え方でOKです。
さて、画像のコントラストを変更する方法を解説いたしましたが、今回の方法で変更できるのは画像1枚です。
複数の画像を一括で変更したい場合もあるかと思いますので、次項で解説いたします。
複数の画像のコントラストを変更する方法
下記コードにて、複数の画像のコントラストを変更することができます。
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.Contrast(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を独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!