OpenCVを用いた画像処理について解説します。今回は2値化についてです。
※Pythonの基本的なことについての説明は省略します。
OpenCVのインストール
最初に、OpenCVを使えるようにするためにopencv-pythonをインストールする必要があります。コマンドプロンプトを起動し、以下のコードを実行してください。(すでにインストール済みの方はもちろん不要です。)
pip install opencv-python
pip install opencv-contrib-python
pip install numpy
これで画像処理を行う準備ができました。
OpenCV(Open Source Computer Vision Library)は画像処理用の関数が多数実装されたオープンソースのライブラリです。マルチプラットフォームなので幅広く使われており、これを利用して画像処理を行っていきます。
画像処理
今回はWindowsでVisual Studio Codeを使用してコードを書いていきます。コードについての大まかな説明はコメントアウトを利用して行います。
2値化
2値化とは、対象の画像から設定した条件をもとに2値画像を生成する処理です。ある値(閾値)を設定し、その値より大きいか小さいかで、グレースケール画像の画素値を白(1)か黒(0)に変換します。
5行目:cv2.imread(‘対象となる画像’,0)
これで対象となる画像を読み込みます。0はグレースケールで読み込み、1ならばカラーで読み込むことになります。
8行目:cv.threshold(入力画像,閾値,最大値,閾値処理)
これで2値化を行います。入力画像はグレースケール画像である必要があります。画素値が第2引数の閾値より大きければ、第3引数に最大値として設定した値になります。つまり、第3引数は閾値より大きく設定する必要があります。閾値処理には以下のようなものがあります。
THRESH_BINARY | 閾値を超えた画素値は最大値になり、それ以外は0になる。 |
THRESH_BINARY_INV | 閾値を超えた画素値は0になり、それ以外は最大値になる。 |
THRESH_TRUNC | 閾値を超えた画素値は閾値と同じ値になり、それ以外は変更されない。 |
THRESH_TOZERO | 閾値を超えた画素値は変更されず、それ以外は0になる。 |
THRESH_TOZERO_INV | 閾値を超えた画素値は0になり、それ以外は変更されない。 |
10行目、11行目:cv2.imshow(“ウィンドウに表示される文字”, 表示させる画像)
これは画像をウィンドウとして表示させるときに使用します。
ウィンドウに表示される文字とは、左上の文字のことです(この場合は「before」と「after」)。
13行目:cv2.waitKey()
これは次の処理を行うまでの待機時間についての命令です。()内に数値を入れて待機時間を設定します。1000で1秒間待機です。()内が0なら、適当なキーが押されるまで待機ということになります。
14行目:cv2.destroyAllWindows()
これで表示させたウィンドウを全て閉じます。つまり、13,14行目は「適当なキーを入力した時、10,11行目の命令で表示させたウィンドウを閉じる」ということです。
↓コピー用プログラム
import cv2
import math
import numpy as np
img_before = cv2.imread('元となる画像',0) #画像の読み込み
thresh = 144 #閾値
ret,img_after = cv2.threshold(img_before, thresh, 255, cv2.THRESH_BINARY)
cv2.imshow("before",img_before) #元画像を表示させる
cv2.imshow("after",img_after) #2値化後の画像を表示させる
cv2.imwrite('binary.jpg', img_after) #2値化後の画像を保存
cv2.waitKey(0) #処理待ち
cv2.destroyAllWindows() #表示させた全てのウィンドウを閉じる
使用する画像はプログラムと同じフォルダーに入れて実行してください。
「cv2.imwrite(‘保存名’, 保存する画像)」で画像を保存することもできます。
実行方法
作成したプログラムの実行方法についてです。
まずはコマンドプロンプトを開きます。画面左下の検索バーに「cmd」と入力すると出てくると思います。
次にプログラムファイルの位置を知る必要があります。
エクスプローラーを開いてプログラムファイルがあるところまで行き、上部を確認してください。今回はUSBにフォルダーを作成し、(F:)となっています。USB内の「gazousyori」というフォルダー内に「img-pro.py」という名前のプログラムを作成しました。ここにコマンドプロンプトの「cd」でディレクトリを変更します。言葉で説明するのが難しいので以下の画像を参照してください。
後はエンターを押すだけで実行できます。一応別例も以下に挙げておきます。
プログラムファイルの保存場所が異なる&Visual Studio Codeから確認したバージョンです。途中で「ドキュメント」と日本語が入っていますが、これはあまり良くありません。プログラムが正常に動かない場合もあります。
コメント