pythonで遊ぼう!!画像の色とサイズを変換してみよう!

pythonで遊ぼう!!〜画像処理編〜

pythonで遊ぼう!こちらはシリーズ記事でございます!!

念願のプログラムを一緒に書いていこう的なシリーズです!!

色々書きたい記事あったんですが、なんだかんだこういうのが一番書きたかったんですよね!!

pythonは人気のある言語ですし、たくさんのパッケージ(便利アイテム的なやつ)があり初心者向けな言語でもあります!!

そんなpythonを使って遊んでみようというシリーズになります!!

初回は画像処理です!!

ではレッツゴー!!

実装準備

実際にコードを書いていく前に準備をしましょう!!

今回はこのシリーズ初回なので、pythonをインストールしていくところからやっていきましょう!

ただこれちょっと曲者なので、下記に必要環境条件とそれを構築するための参考記事など貼っておきますのでご確認お願いいたします!!

  • python –version
    • 上記のコマンドを打ったときに、Python 3.x.xのように最初の文字が3になっている
    • つまりは3系のpythonが使用できる状態
  • pip –version
    • pipコマンドをインストールする方法が載った参考記事
    • pip 20.x.xのように返答が来る
    • command not foundみたいにコマンド見つかりませんと出る方は、pipコマンドが使用できない状態なので、参考記事に沿ってインストールしてください!
  • 上記の2つのコマンドは、Windowsの方はコマンドプロンプト、macの方はターミナルというコマンド実行ツールにて確認してください!

初心者の方などはここでつまずく人も多いかもですね…

一緒にやれればよいのですが、、、

こればっかりは頑張ってもらうしかないです!

ネットに関連記事はたくさんありますので、色々調べて構築してください!!

気を取り直して、早速やっていきましょう!!

まずは今回使用するパッケージをインストールしていきたいと思います!!

今回の使用するパッケージはopencv-pythonです!

こちらは今回のような画像処理全般に使用できるパッケージとなっております!

画像処理を簡単にしてくれるパッケージが誰でも使えるなんてほんと便利な世の中ですねー

インストールは簡単で、下記のコマンドを打つだけです!

  • pip3 install opencv-python

上手くいきましたか??

You should consider upgrading via the ‘/Users/xxxxx/.pyenv/versions/3.9.1/bin/python3.9 -m pip install –upgrade pip’ command.

みたいに出た人は、

/Users/xxxxx/.pyenv/versions/3.9.1/bin/python3.9 -m pip install –upgrade pip

こちらを実行してみてください!(xxxxxの部分はご自身のメッセージに合わせて変更してくださいね!)

上手く行ってることを願うことしか出来なくて申し訳ないですが、逆に上手く行っていない方は調べる練習になると思って頑張ってみてください!!

これで準備は終了です!!

最初の環境準備が大変だと思いますが、

一度やってしまえば当分はなんの問題もなく動きますので、

最初だけだと思って頑張りましょう!!(macのbig surが曲者過ぎて、私も1~2時間くらいは格闘していましたw)

ではいよいよコードを書いていきましょう!!

実行ファイルなど

このシリーズでは最初にディレクトリ構造とコードの全容を記載しちゃいたいと思います!

各々で変更しないと行けない部分は別として、

基本的にはコピペで動くようにしておりますので、初心者の方もとりあえずコピペして動くという感動を味わってください!!

以下、概要です!!

ディレクトリ構造フォルダファイルの違いに注意してくださいね!)

image_operation_for_python(親フォルダ) 
    > src(関連フォルダやファイルを入れておくフォルダ)
        > completed(処理したあとの画像を保存するフォルダ)
        > org(処理する画像を保存しておくフォルダ)
            > lena.jpg(画像処理のサンプルとしてよく使用される女性の画像です)
        > execute.py(実行コードを書くファイル)

execute.py

# -*- coding: utf-8 -*-
import cv2

# 画像を読み込む
img = cv2.imread('./org/lena.jpg')
height, width, channels = img.shape[:3]
# グレースケールに変換
gray = cv2.cvtColor(img, cv2.COLOR_RGBA2GRAY)
cv2.imwrite('./completed/lena_gray.jpg', gray)
#画像をリサイズ
half_width = width / 2
half_height = height / 2
one_third_width = width / 3
one_third_height = height / 3
half_image = cv2.resize(img, (int(half_width), int(half_height)))
one_third_image = cv2.resize(img, (int(one_third_width), int(one_third_height)))
cv2.imwrite('./completed/lena_half.jpg', half_image)
cv2.imwrite('./completed/lena_one_third.jpg', one_third_image)
# 結果を出力
cv2.imshow("gray", gray)
cv2.imshow("half", half_image)
cv2.imshow("one_third", one_third_image)
while True:
    # Escキーを入力したら終了
    if cv2.waitKey(1) == 27:
        break
cv2.destroyAllWindows()

lena.jpg(下の画像を保存して使用してください!)

以上です!!

まずはディレクトリ構造のとおりにフォルダやファイルの作成をしてみてください!

その後、実行ファイルでもあるexecute.pyの中身をコピペして保存してください!

最後にlena.jpgという名前で上記の画像を保存し、orgフォルダの中に移動してください!

あとは下記の2つのコマンドを実行するだけです!

  • cd /image_operation_for_python/src
    • cdコマンドで、先ほど作成したsrcフォルダまで移動します!
    • cdコマンドがよくわからないって人は、
    • こちらとかこちらの記事を見てみてください!
  • python execute.py
    • pythonのあとに半角スペースを入れて実行ファイルを指定することで処理が実行されます!

completedフォルダに処理後の画像が保存され、ご自身のpcの画面に処理された画像が表示されているはずです!!

ここからは詳しくコードの中身をみていきましょう!

コード解説

今回の処理、やっている事自体は凄くシンプルです!

まず、画像読み込んで

色変換サイズ変換を行う

です!!

では順番に見ていきましょう!

まずは画像の読み込みです!

# 画像を読み込む
img = cv2.imread('./org/lena.jpg')
height, width, channels = img.shape[:3]

上記で行っているんですが、

cv2.imreadで画像を読み込み、

その後の処理用にimg.shapeでオリジナル画像の

高さ色相数(色ごとの番号のようなモノ)

を取得しています!

ここまででオリジナル画像の情報を取得出来ましたね!

続いては色変換です!

今回はカラー画像をグレースケールに変換するという処理をしています!

# グレースケールに変換
gray = cv2.cvtColor(img, cv2.COLOR_RGBA2GRAY)

たった一行です!ほんとこのパッケージ便利だなー

今回はグレースケールですが、他にも色々と変換できるので興味ある方は調べてみてくださいねー!

最後はサイズ変更です!

今回は1/2と1/3サイズに変換しております!

#画像をリサイズ
half_width = width / 2
half_height = height / 2
one_third_width = width / 3
one_third_height = height / 3
half_image = cv2.resize(img, (int(half_width), int(half_height)))
one_third_image = cv2.resize(img, (int(one_third_width), int(one_third_height)))

こちらも処理自体はすごくシンプルですね!

画像読み込みのときに取得した高さと幅が、height、widthという変数に代入されているので、その数値を2と3で割ってサイズを算出して

cv2.resizeに算出した数値を入れるだけで、そのサイズの画像が生成されるという感じです!!

補足:画像の保存はcv2.imwrite、pcへの画像表示はcv2.imshowでやっております!

まとめ

ここまでお読みいただきありがとうございました!

初めてのプログラム実装記事どうだったでしょうか?

今回のプログラムはわりかしシンプルなので、初心者の方でもとっつきやすいんじゃないかなと思います!

最初のpythonを動かすところだけは人によって出るエラーなどもバラバラなのでそこだけ頑張らないとなんですが…

今後、pythonに限らず他の言語やサービスでのシリーズも考えていますので、楽しみに待っていてください!!

こういうプログラム作ってみてほしいなどありましたら、どしどしお問い合わせしていただけると嬉しいです!!

それではみなさん、素敵なpythonライフをお送りください〜!!