cv2.imread で画像データを読み込んだ際、画素値の集合(リスト)を返す。このとき、カラーの場合は、青・緑・赤の色成分の配列、グレースケールの場合は、明るさを示している。
>> img = cv2.imread(画像ファイルへのパス, cv2.IMREAD_COLOR) # カラー画像として読み込む >> print(img[100, 100]) # (100,100) の画素値を表示 [124 168 162] >> img = cv2.imread(画像ファイルへのパス, cv2.IMREAD_GRAYSCALE) # グレースケール画像として読み込む >> print(img[100, 100]) # (100,100) の画素値を表示 161カラー画像として読み込んだデータをグレースケールに変換する場合は、cv2.cvtColor を用いる。このとき、第2引数に cv2.COLOR_BGR2GRAY を指定する。
なお、cv2.cvtColor は様々な変換処理を行うことができる。詳細については、マニュアルなどを参照のこと。
>> img = cv2.imread(画像ファイルへのパス) # 第2引数を省略した場合は、カラー画像として読み込む >> img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) >> print(img_gray[100,100]) 161二値化は白または黒のみの画像データのことである。一旦グレースケール化したデータに対して、明度が与えられた閾値以上なら白、以下なら黒にする。
cv2.threshold の第2引数に閾値を与え、閾値以上なら第3引数の値に変更する。
>> print(img_gray[100,100]) 161 >> print(img[200, 80]) 69 >> _, img_bin = cv2.threshold(img_gray, 128, 255, cv2.THRESH_BINARY) # 128 を閾値にする >> print(img_bin[100,100]) 255 >> print(img_bin[200,80]) 0以下のスクリプトにより、これらの処理を画像で確認する。
# -*- coding: utf-8 -*- import cv2 IMG_FILE = "(画像ファイルへのパス)" img = cv2.imread(IMG_FILE) cv2.imshow("image0", img) cv2.waitKey() cv2.destroyAllWindows() img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imshow("image1", img_gray) cv2.waitKey() cv2.destroyAllWindows() _, img_bin = cv2.threshold(img_gray, 128, 255, cv2.THRESH_BINARY) cv2.imshow("image2", img_bin) cv2.waitKey() cv2.destroyAllWindows()
0 件のコメント:
コメントを投稿