画像を二値化(Binarization)する方法を紹介。
 
空の画像(sora.jpg)を使う。
thresholdメソッドの使い方は次の通り。
cv2.threshold(img_src, thresh(閾値), 画素値の最大値, 二値化するためのタイプ)
まず二値化するためのタイプとして選択できるのは以下の8種類。
1 2 3 |
cv2.THRESH_BINARY cv2.THRESH_OTSU cv2.THRESH_TRIANGLE cv2.THRESH_BINARY_INV cv2.THRESH_TOZERO cv2.THRESH_TRUNC cv2.THRESH_MASK cv2.THRESH_TOZERO_INV |
上の全てではないが、一部の画素値と閾値の関係は以下の図の通り。
閾値を変更することで、二値化するときの画素数の基準を変更できる。
画素数の最大値は255でOK。
sourceディレクトリにbinarization.pyを作成する。
# -*- coding: utf-8 -*- import cv2 import numpy as np if __name__ == '__main__': # 画像の読み込み img_src = cv2.imread("./image/sora.jpg", 1) # グレースケールに変換 img_gray = cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY) # 二値変換 thresh = 100 max_pixel = 255 ret, img_dst = cv2.threshold(img_gray, thresh, max_pixel, cv2.THRESH_BINARY) # 表示 cv2.imshow("Show BINARIZATION Image", img_dst) cv2.waitKey(0) cv2.destroyAllWindows()
実行してみる。
(opencv_python)$ python binarization.py
試しに二値化のタイプをTHRESH_BINARYからTHRESH_TOZEROに変えた結果は以下のとおり。
ちょっと印象的?
Tags: BInarization, OpenCV, OpenCV3, python, python2, python3, 二値化