Python 画像処理入門 OpenCV編 (その1)

python

今回は、Python で画像を取り扱う方法を記載したいと思います。

OpenCVのインストール

まずは、画像を取り扱うための、パッケージをダウンロードします。Python 用の画像処理パッケージには、主に、OpenCV と Pillow の2種類があります。ここでは、OpenCV を取り上げます。その理由は、C言語の頃から開発が行われている、長年の実績があるパッケージだというところです。OpenCV をメインに使用し、足りない機能を Pillow で補っていく、というやり方がお勧めです。

それでは、インストールです。インストールには、Conda コマンドを使用します。Conda の環境に関しては、以前掲載した、下記のブログを参照してください。

Anaconda prompt を起動してください。お好みの、仮想環境に移動します。私の場合は、(py37_jpnb) という環境がありますので、下記のコマンドを実行します。

conda activate py37_jpnb

実行後の画面は、下図の様になります。行の先頭の表記が変わり、仮想環境に入ったことがわかります。

次に、OpenCV のインストールです。下記のコマンドを入力してください。

conda install opencv

実行中に、キー入力を求められますので、”y” を入力して進みます。下図の画面になれば、インストールは完了です。やたらに簡単ですね!以前は、Conda コマンドが OpenCV に対応しておらず、インストールが結構大変でした。技術は、日々進化しています。

同時に、画像を表示するためのパッケージもインストールしておきましょう。コマンドは、下記になりますので、コマンドプロンプト上で実行してください。

conda install matplotlib

OpenCV による、簡単な画像処理プログラミング

インストールが完了したら、次に簡単な画像処理プログラミングをしてみましょう。Python 開発統合環境の一つである、Jupyter notebook を起動しましょう。 Jupyter notebook については、下記の記事を参考にしてください。

起動するには、下記のコマンドを実行します。

jupyter notebook

すると、下図の様に、開発統合環境が起動します。

新しいファイルを作りましょう。右上の “New” をクリック、”python 3(ipykernel)” をクリックします。下記の、新しいタブが表示されます。

ここからが、プログラミングの始まりです。まずは、OpenCV を使えるおまじないです。下記のコードを入力して、実行しましょう。実行は、”Shift” キーを押しながら、”Enter” キーを押す、です。

import cv2

実行結果は下記です。初回の実行には、数秒の時間がかかります。実行中は、”In [*]” という表示で、実行が完了すると、”In [1]” という表示に変わります。

素材の画像を準備しましょう。下記の画像を使います。試したい場合は、画像をダウンロードして、自分のローカルディスクに保存してください。

ファイル名は、”img_for_test.jpg” です。先ほどのディレクトリに、保存します。(下図)

プログラミング画面に戻り、ファイルを開くコードの記述です。

img = cv2.imread('img_for_test.jpg')

実行結果です。

つぎに、読み込んだ画像を表示します。そのために、表示用モジュールを読み込みます。

import matplotlib.pyplot as plt

なんだかわからない文章ですが、おまじないだと思って、慣れてください。実行結果です。

つぎに、画像の表示です。下記コードになります。

plt.imshow(img); plt.show()

実行結果が下図です。

なんと、赤鬼のはずだったのが、青鬼が表示されてしましました!原因は、OpenCV の読み出し関数を使っていることでした。matplotlib の読み出し関数を使うことで、正常なカラー表示ができるようになります。

# これは使っちゃだめ。
img = cv2.imread('img_for_test.jpg')
# こちらを使う。
img = plt.imread('img_for_test.jpg')

もう一度、実行してみましょう。読み込みと、表示を一気に行ってみます。コマンドは、下記です。

img = plt.imread('img_for_test.jpg')
plt.imshow(img); plt.show()

実行結果が下図です。無事に赤鬼が表示されました。

まとめ

今回は、画像の表示まで行いました。次回は、画像の様々な処理の仕方を書いていきます。次回も、購読よろしくお願いします。

コメント

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