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」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、今回用意した画像がバイナリ画像(二値画像)に変換されることを確認できました。
コメント