icon
icon

PythonのPillowの使い方を現役エンジニアが解説【初心者向け】

初心者向けにPythonのPillowの使い方について現役エンジニアが解説しています。PillowはPythonで画像処理を行う場合に用いられるライブラリで、他にOpenCVがあります。Pillowを使ってPythonで画像を回転させたりサイズを変更したり、グレースケール(白黒)にしたり、保存したりしてみましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

nakamoto

アジマッチ有限会社代表取締役社長。書籍化歓迎。対応業務:PHP(Laravel)、機械学習、Vue.js、LAMP・AWS、越境EC、CTO、エンジニア採用、CTO、経営者の不安解決コンサルティング。

PythonのPillowの使い方について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

Pillowを学習していただくことで、Pythonを利用して画像の取り込み、保存、表示処理などを行えます。

実務でもPillowを利用して画像サイズを統一するなど、よく利用するのでぜひ学習してみてくださいね。

目次

1時間でできる無料体験!

 

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PythonのPillowの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

Pillowとは

Pillow(PIL)は画像処理ライブラリの1つです。

Pythonには画像処理を行うことのできるライブラリがいくつかあり、よく使われるものとしてOpenCVと今回紹介するPillowがあります。

OpenCVは処理の内容にはよるものの、高度な画像処理に利用します。

PillowはOpenCVに比べ、単純な操作や基本的な操作を行うことができ初心者向きです。

自分の好みやしたい処理に合わせて使うライブラリを変えてみましょう。

 

Pillowのインストール方法

Pillowを使うにはインストールする必要があります。

それぞれの開発環境に応じて、コマンドを利用したインストールが可能です。

 

一般的なPython環境

pip install Pillow

 

Anaconda環境

Anacondaをインストールすると、Pythonでよく利用されるライブラリ(パッケージ)のインストールや設定が整った環境を利用可能です。

Anacondaの解説記事も参考にしてみてください。

conda install Pillow

 

[PR] Pythonで挫折しない学習方法を動画で公開中

Pillowの使い方

続いて、Pillowの使い方をみていきます。

Pillowをプログラムで使うには、ライブラリの中の必要なモジュールをインストールする必要があります。

ここからは、画像の読み込み・拡大縮小・回転・色の変換・保存の方法についてふれていきましょう。

 

使用画像

今回利用する画像はテックアカデミーのロゴ画像です。

 

コマンド例

from PILでPillowからモジュールをインストールを行うことを明示します。

import モジュール名で、使用するモジュールのインストールを行います。

from PIL import モジュール名1, モジュール名2

 

前処理

今回は画像操作を行うにあたり、Pillowとmatplotlibという2つのライブラリを利用します。

サンプルコード

from PIL import Image
import matplotlib.pyplot as plt
%matplotlib inline

解説

1行目のfrom PIL import Imageでは、PillowからImageモジュールをインポートします。

2行目のimport matplotlib.pyplot as pltでは、matplotlibライブラリのpyplotモジュールをインポートして、pltという名称で利用できるようにします。

3行目の%matplotlib inlineでは、表示処理をアウトプット行出力に設定することで、画像をグラフ描写するような感じで表示できます。

 

画像の読み込み

画像の読み込みは、Imageモジュールのopen()関数を使います。

読み込んだ画像を扱う変数を用意して、以下の通り実行します。

img = Image.open(画像ファイルのあるパス)

 

画像がちゃんと読み込めたかどうかは、show()メソッドを使って利用中のOSにインストールされている、標準ソフトで表示されます。

img.show()

 

表示結果

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

画像の加工、表示

画像の大きさを取得して拡大、縮小します。

画像の大きさを取得するには、size属性で行います。

サンプルコード

print(img.size)

表示結果

 

画像の大きさが表示できたら、自分の好きな大きさに変換します。

大きさの変換はresize()メソッドを使って以下の通り定義し、サイズを指定して変換しましょう。

img_resize = img.resize((横の大きさ, 縦の大きさ))

 

サンプルコード

img_resize = img.resize((50,50))
plt.imshow(img_resize)

表示結果

 

続いて、画像を回転させます。

画像の回転はrotate()メソッドで時計回りに回転する角度を指定して行いましょう。

今回は90度回転させます。

サンプルコード

img_rotate = img.rotate(90)
plt.imshow(img_rotate)img_rotate = img.rotate(90)

表示結果

 

画像処理の最後に、色を白黒に変換していきます。

convert()メソッドを使って白黒にしましょう。

引数に’L’を指定するのは、画像を白黒(モノクロ)にするためです。

引数に’L’を指定するだけだと、白黒のデータにできますが表示は白黒になりません。

そのためimshowメソッドに、cmap=”gray”という引数を指定することで白黒表示が可能になります。

サンプルコード

img_convert = img.convert('L')
plt.imshow(img_convert, cmap="gray")

表示結果

 

画像の保存

処理した画像を保存する場合、下記のように記述します。

img.save(保存したい場所のパス)

Pillowの詳しい使い方については、英語の公式ドキュメントを参照してみましょう。

Pillow

 

1時間でできる無料体験!

実際に書いてみよう

ここでは、プログラムを書いて確認してみましょう。

適当な画像ファイルを用意して、そのファイルのパスを取得してください。

そして、以下のプログラムを実行しましょう。

 

サンプルコマンド

サンプルコマンドを順番に実行していくことで、画像の読み込み・加工・保存を行うことが可能です。

ライブラリのインポート

from PIL import Image
import matplotlib.pyplot as plt
%matplotlib inline

画像の読み込み

img = Image.open('/content/techacademy.png')
plt.imshow(img)

画像サイズの変更

img_resize = img.resize((50,50))
plt.imshow(img_resize)

画像の回転

img_rotate = img.rotate(90)
plt.imshow(img_rotate)img_rotate = img.rotate(90)

画像の白黒化

img_convert = img.convert('L')
plt.imshow(img_convert, cmap="gray")

画像の保存

img_convert.save('/convert.png')

実行結果

 

まとめ

この記事では、PythonのPillowと呼ばれる画像処理ライブラリの基本的な使い方について解説しました。

Pillowでは他にも様々な処理を行うことができるため、行いたい処理に応じて公式ドキュメントなどを参考にして使用してみましょう。

 

執筆してくれたメンター

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長開発実績:PHPフレームワークによるフランチャイズ企業向け会員制SNS。Shopifyによる海外進出用大規模ネットショップ構築。Vue.jsによる金融機関向け内部アプリ。AWSやLinuxハウジングサーバでの環境構築。人工知能を利用した画像判別システム。小売チェーン店舗用スマホアプリ。WordPressによる不動産チェーン店向け賃貸・売買仲介システム。基幹システム移管用データコンバートシステム。ボランティア活動:小学生がオリジナルAndroidアプリをGoogle Playでリリース、NHK Whyプログラミング入賞、全国Programming Festival入賞、中学生がSNS型PWAアプリリリースする市クラブ講座活動を行っている。
大石ゆかり

PythonのPillowの使い方が分かりやすくて良かったです!

田島悠介

ゆかりちゃん、これからも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

Pythonを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPythonコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、人工知能(AI)や機械学習の基礎を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する