【Python】NumPyのarrayとimageファイルで画像処理 – pillow(PIL)

Pythonデータ分析の基礎
スポンサーリンク

初心者の独学でのプログラミング学習はとてもツライ…

プログラミングをマスターしたい!

今のIT業界はプログラミングエンジニアが不足していると言われています。
高収入の職業とも言われる分野もありますし、AI、機械学習、ディープラーニング、IOTといった注目される分野が目白押しです。

でも、いざ初心者がプログラミングをマスターしようとすると…

  • 本を読んだりネットの記事で自力で勉強しているけど限界を感じる
  • プログラミングスクールに定期的に通うのは面倒だ
  • 地方に住んでると家の近くにプログラミングスクールなんてない
  • どのプログラミング言語を学べばいいのか悩む
  • 実際の就職や転職にプログラミングが活かせるのか心配だ

など、プログラミングを自分で勉強しようとすると悩みが尽きません。

プログラミングに詳しい友人に教えてもらおうと思っても、そんな友人なんて滅多にいません。いたとしても細かく教えてくれるほど時間に余裕がある人はいないでしょう。

そんな独学でプログラミングをマスターするのに限界を感じてる方に、オンラインプログラミングスクールをがおすすめです。

おすすめのオンラインスクールはこちら

PythonのライブラリーNumPyを使った配列(Array)の操作はすでに学んできました。

NumPyの配列を任意に作ってこれまでは扱ってきましたが、データ分析に関連して最近はAIなどで画像の読み取りなどがよく話題になります。

ここでは画像ファイルとNumPyの配列との関係を使って画像の色の変換をみていきたいと思います。画像処理にはpillow(PIL)を使います。

スポンサーリンク

imageファイルとRGBカラーモデル

imageファイルは、ピクセル単位のデータが縦と横に集まりそれぞれにカラーデータを与えられた配列と考えることができます。これは行と列のデータ構造を持った配列表示です。

縦の行が画像のheightに当たります。横の列が画像のwidthに当たります。それぞれの位置にはカラーのデータが格納されていることになります。

グレースケールでは、0と1の間で白と黒の濃度を示すことになります。

RGBカラーモデルはR(red)、G(green)、B(blue)の3原色を合成して多様な色を表現する方法で、それぞれの色の明度を0から255で示します。

下の画像はKeynoteのカラー表示で、RGBを使ったものです。

スポンサーリンク

NumPyのArrayとimageファイルの読み込み

では、imageファイルの読み込みをやっていきましょう。

Pillow(PIL)のインストール

画像ファイルを読みこむために画像処理ライブラリのPillow(PIL)をインストールします。Anacondaをインストールしている環境であればすでにインストールされているかもしれません。もしインストールされていなければ、ターミナルからcondaコマンドやpipコマンドでインストールしましょう。

あるいは

NumPyとimageファイル

jupyter notebookを使って次の画像を読み込んでいきます。

apples.jpgを作業ディレクトリに配置します。

各種ライブラリのインポートからはじめます。

NumPy、Matplotlibをインポートします。ここでは先ほどインストールしたpillow(PIL)からImageをインポートします。

先ほどのapples.jpgを読み込みますが、Image.open()を使います。

open()にファイル名を指定してイメージファイルを開いています。これを変数imgに渡しています。

実行すると次のように表示されます。

(画像表示の部分は表示サイズの関係で、全体ではなく一部だけ切り取っています)

変数imgの型をtype()で調べてみます。

Jpegファイルであるのがわかります。

これをNumPyのasarray()を使って読み込んでいきます。

asarray()はリストやタプルなどの配列のようなオブジェクトから配列を生成します。画像ファイルは縦横にデータが並べられた配列と考えることができます。

asarray()で読み込んだデータを変数img_arrに代入して、shapeを見てみます。

1066行、1600列の配列データになっています。3はカラーのR、G、Bの3つのデータがあることを示しています。heihtが1066px、widthが1600px、3カラーチャンネルということになります。

このデータの配列をimshow()で表示します。

画像の変換

この画像をRGBカラーモデルのGの緑を強調した画像に変換してみようと思います。

img_arrをcopy()を使ってコピーします。

コピーしたものをimg_greenとしておきます。

img_greenは(行データ, 列データ, RGBデータ)の構造になっているのは、上のshapeを使ったことでわかります。

画像部分のデータは全部表示するなら特に切り取ることはありません。RGBデータは0がR(赤)、1がG(緑)、2がB(青)意味します。

ここでは緑系の画像にしようとしているので、RGBの1は操作しないことにします。

すると、img_greenは次のように操作することができます。

どちらもコロンを使って画像データを全て表示する操作になっていますので、データを切り取っていません。RGBのRとBである0、1を指定して0を代入し、赤と青の色味を消しています。

これを再度、imshow()で表示してみます。

リンゴの画像が緑中心のものに変換されました。

以上、画像の色の変換を行ってみました。

スポンサーリンク

最後に

ここでは、PythonのNunPyの配列と画像のデータを扱ってみました。AI、機械学習などでも扱うことになります。

画像ファイルを読みこむために画像処理ライブラリのPillow(PIL)をインストールして使ってみました。

RGBカラーモデルの表現方法についても理解しておきましょう。

ここでは色の変換をしてみましたが、画像サイズや比率、形の変換もすることができます。このあたりは実際に行う時に触れてみようと思います。

自宅学習はオンラインプログラミングスクールを活用!

自宅学習にはオンラインプログラミングスクールがおすすめ!

オンラインプログラミングスクールは独学でプログラミングを学習する時のデメリットを解消する仕組みが備わっています。

気になるところは…

学習がオンラインで完結するのはもちろんですが、独学ではできない質問サポートがあるかどうか。わからないことを現役のエンジニアが質問に答えてくれるといいですよね。

受講者個人に担当のメンターがつき、マンツーマンで学習の相談に乗ってくれることも必要で、ITエンジニアの世界についても伺えたりもすると幅が広がります。

オンライン面談だけでなく、チャット機能を使って気軽に質問を投げかけることができることも大切です。

また、オリジナルプロダクトの開発とサポートがコースの中に組み込まれていて、独学ではなかなか難しい実践的なスキルの習得にもつなげたい。

プログラミングをマスターした後の実際の仕事につながる転職サポートでがあると、ITエンジニアの世界に飛び込むのに不安が解消されます。

そんな豊富なメニューが揃っているおすすめのオンラインプログラミングスクールがこちらにあります。

おすすめのオンラインプログラミングスクールはこちら

TechAcademyはおすすめのオンラインプログラミングスクール!

オンラインのプログラミングスクールでは、テックアカデミーの充実度が目を見張ります。

オンラインで受講が完結するので、自宅学習でプログラミングをマスターしたい人にはテックアカデミーがおすすめです。

メンター制度も現役のプロが対応してくれます。大学生などが対応しているスクールに比べて本気度と専門性が違います。メンター制度の無いスクールもありますし、担当では無いメンターが対応するスクールもあったりするので、相談の質が違いますね。

チャットサポートもあるので、それが無いスクールに比べて相談の気軽さの違いがあります。

プロダクト開発のサポートで実践力が養われるだけでなく、どの講座を利用しても転職サポートが受けられるのはありがたい。

用意されているコースも、初心者向けのプログラミングコースから、Python、Java、PHP、iPhoneアプリ、AndroidといったITエンジニアのベースとなる主要な言語だけでなく、AI、データサイエンス、ブロックチェーン、webアプリケーションと行った実践的なコースまで用意しています。

他にも、webデザインやUI/UXデザイン、動画編集、webディレクションやwebマーケティングといったプログラミング以外での役立つコースまであります。

このようなたくさんの選択肢から自分にあったコースを選ぶことがでるのがテックアカデミーです。

コースの期間も短期間でマスターしたり、長期の受講でじっくり取り組むコースを選ぶこともできます。

複数講座のセットコースを利用することで大幅な割引が受けらるので、お得に受講することもできます。

無料体験もありますので、プログラミング学習でオンラインスクールを考えている人はTechAcademyをぜひ利用してみてください。

テックアカデミーの公式サイトはこちら

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