pythonライブラリを使って画像処理

近年AIが注目されており、それに際してプログラミング言語のpythonが注目を集めています。そこで今回はpythonを使って簡単な画像処理に挑戦していきたいと思います。

準備

では、まず初めにanaconda navigatorを立ち上げてjupyter notebookを立ち上げてみましょう。

やり方がわからない方は、下の記事を参考にしてみて下さい!

実際にやってみよう!

では、実際にやっていきましょう!

今回使うライブラリの紹介

まず、ライブラリをインストールしていきます。今回使うライブラリは

import os
import cv2 
import matplotlib.pyplot 

の三種類になります。osはディレクトリ移動の際に使います。cv2はopencvと呼ばれる画像処理に特化したライブラリです。最後のmatplotlibは計算結果をグラフ化、画像化したりする際に使うライブラリとなっています。

matplotlib.pyplotを使う際にこの長い文をいちいち書いていくのは面倒なので

import matplotlib.pyplot as plt

としておきましょう!

使うデータが存在するディレクトリへの移動

次に、ディレクトリの移動をしていきましょう。画像などのデータがどこにあるかをプログラムに示しておかないとプログラムは実行されません。そのためこのディレクトリ移動は頻繁に使うことになると思います。

では、現在プログラムがどのディレクトリにあるかを確認するために

os.getcwd()

と書き込み、プログラムを実行してみましょう。そうすると

 C:\Users\*****\****

と実行結果が表示されると思います。(この表示されるディレクトリは人によって違ってきます

表示されたディレクトリに扱いたいデータがある場合はそのままで大丈夫です。

もし、 表示されたディレクトリに扱いたいデータがない場合 は

os.chdir("扱いたいデータが存在するディレクトリをここに書く")

をプログラムに書き込むことでディレクトリを移動できます。正しく移動できたか確認したいときはもう一度

os.getcwd()

と書き込んで実行することで確認できます!

画像データの読み込み

次に画像を読み込んでみましょう。画像を読み込む際は

a=cv2.imread("ここに読み込みたい画像の名前をかく",0)

と適当な変数に画像データを代入します。

今回は下の画像を使ってみたいと思います。

1280×690ピクセルの画像

aに代入されたデータは画像のサイズに応じた配列となります。

この時の第二引数にある0は3次元目の値を0に固定するために行っています。

詳しく見るためにaの配列データのサイズを確認してみましょう。プログラムに

print(a.shape)

と書き込んで実行してみて下さい。

そうすると実行結果に画像のサイズが表示されると思います。

僕の場合は(690, 1280) と表示されました。

今回使った画像は1280×690ピクセルなので実行結果が正しいことがわかります。

では、第二引数を書かない場合と比較してみましょう。適当に変数bをおいて

b=cv2.imread("ここに読み込みたい画像の名前をかく")
print(b.shape)

とかいて実行してみましょう。そうすると実行結果に新しい数が一つ入っていると思います。僕の実行結果では

(690, 1280, 3)

と表示されました。先ほどの変数aの結果と比較してみると第二引数を0とすると画像の3次元目の情報をなくすことができることがわかると思います。

実際に画像の色を変化させてみる

では、この読み込んだ画像データを色を変えて表示させてみましょう。プログラムに

plt.imshow(a,cmap="gray")
plt.show()

と書き加えてみて下さい。

そうすると元の写真と色が違う画像が出力されたと思います。

グレイスケール変換した画像

この画像の色はplt.imshowのcmapの値を変化させることで変えられます。例えばcmapを’cool’にしてみると下の画像のように色を変化させれます。この色の種類はたくさんあるので是非ほかの色も試してみて下さい。

全体のプログラムは下に示しておきます。

import os
import cv2 
import matplotlib.pyplot as plt


os.getcwd()
os.chdir("移動先のディレクトリ名")

a=cv2.imread("ここに読み込みたい画像の名前をかく",0)
b=cv2.imread("ここに読み込みたい画像の名前をかく")
print(a.shape)
print(b.shape)

plt.imshow(a,cmap="gray")
plt.show()

まとめ

今回は画像処理の導入として画像の読み込みから色の変換までやってみました。画像処理の分野はまだまだ奥が深いのでぜひほかの記事なども参考にして勉強してみて下さい!

東京農工大電気電子工学科所属の大学生 趣味:ショッピング、スノボ、映画鑑賞 大学の情報と学んだ知識をアウトプットしていきます!
投稿を作成しました 13

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る
%d人のブロガーが「いいね」をつけました。