OpenCVを使用しPythonで画像をバイナリ画像(二値画像)に変換する

OpenCVを使用しPythonで画像をバイナリ画像(二値画像)に変換してみます。

バイナリ画像(二値画像)とは、正確に2色 (通常は黒と白)のいずれかを持つピクセルで構成されるモノクロ画像です。バイナリ画像(二値画像)は、2レベルとも呼ばれます。各ピクセルは1ビット (0または1) として格納されます。

なお、OpenCVモジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■画像を用意する

OpenCVを使用し画像をバイナリ画像(二値画像)に変換する前に、まずは変換する画像を用意します。

今回は、「girl_sample.jpg」という女性の画像を用意しました。この画像は著作権フリーのものを使用しています。

用意した画像が保存されている場所は「C:\Users\user\test(フォルダパス)」になります。

■OpenCVを使用し画像をバイナリ画像(二値画像)に変換する

画像の用意ができましたので、OpenCVを使用し画像をバイナリ画像(二値画像)に変換するスクリプトを書いていきます。

■コード

import cv2

img = cv2.imread(r'C:\Users\user\test\girl_sample.jpg', 2)

ret, bi_img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)

bi = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)

cv2.imshow("Binary", bi_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

インポートでOpenCV(cv2)モジュールを呼び出して、imgという変数を作成し、その中にcv2.imread()と記述し、今回用意した画像を指定し読み込ませ格納します。

次に、bi_imgという変数を作成し、その中にcv2.threshold()と記述し、画像のしきい値の処理を行います。処理を行う場合は、第1の引数に格納した画像を指定し、第4の引数で、cv2.THRESH_BINARYと記述し、バイナリ(二値)に変換します。第2,第3の引数では、しきい値などの値を設定します。今回は「127, 255」とします。またretでフレームを取得することで戻り値を取得します。trueまたはfalseです。

変換した画像を、cv2.imshow()で、画像を表示してみます。

■実行

今回のスクリプトを「convert_binaryimage.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、今回用意した画像がバイナリ画像(二値画像)に変換されることを確認できました。

コメント

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