【Python】Pillowで画像をグレースケールやモノクロにする

スポンサードリンク
Python
過去の自分
過去の自分

カラーの画像をグレースケールにして、レトロな感じのアルバムを作りたい...。
Pillowで一気にできないかな…?

今の自分
今の自分

なるほど…。
では今回は、「Pillowで画像をグレースケールやモノクロにする方法」
できるだけわかりやすく解説いたします。
また、「複数の画像をグレースケールやモノクロにする方法」
も紹介いたしますので、ぜひ最後まで読んでいってください。

著者情報
スポンサードリンク

PythonのPillowで画像をグレースケールやモノクロにする方法

「convert()」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。

全コード

import PIL
from PIL import Image

input_img = Image.open('C:/Utatane/input_img.jpg')

gray_img = input_img.convert('L')
monokuro_img = input_img.convert('1')

gray_img.save('C:/Utatane/output_img_gray.jpg')
monokuro_img.save('C:/Utatane/output_img_monokuro.jpg')
gray_img = input_img.convert('L')
monokuro_img = input_img.convert('1')

実行結果

事前準備

  • Pillowのインストール

画像を加工したり編集したりするには「Pillow」のインストールが必要です。

Pillowのインストール方法

Pillowを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。

pip install Pillow

※Pillowを使用したことがある場合は、このインストール作業は不要です。

インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、Pillowの簡単な使い方も紹介しておりますのでご参考ください。

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

インポートや画像の取り込み・出力方法の解説は、インストールの記事をご参考ください。

画像をグレースケールやモノクロにする

gray_img = input_img.convert('L')
monokuro_img = input_img.convert('1')

上記コードにて、画像をグレースケールやモノクロにすることができます。

まず新しい名前の変数を書いたら、「=(イコール)」を書きます。

新しく変数を作る際には注意点があります。事前に下記記事で学習しましょう。

イコールの後に、「取り込んだ画像が入った変数」を書いたら、「.convert()」を書いてください。
()内に「グレースケール」にするか「モノクロ」にするかの指定をして完了です。

  • L:グレースケール
  • 1:モノクロ

<グレースケール・モノクロにするテンプレ>
【 新しい変数 = 取り込んだ画像が入った変数.convert(‘グレーorモノクロ指定’) 】

これで、画像をグレースケールやモノクロにすることができます。

グレースケールやモノクロにする際の注意点

一度グレースケールやモノクロにした画像は、カラー表示には戻せません。
出力する際は「別名」で出力(保存)するか、バックアップをとっておくようにしてください。

スポンサードリンク

複数の画像をグレースケールやモノクロにする方法

下記のコードを実行することで、フォルダ内のJPGファイルを全てグレースケールにすることができます。

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))
        gray_img = input_img.convert('L')
        gray_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を独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました