Python OpenCV3で画像の画素値を二値化して出力
画像を二値化(Binarization)する方法を紹介。
[amazonjs asin="4061538225″ locale="JP" title="OpenCVによる画像処理入門 (KS情報科学専門書)"]
前提
 
元画像
空の画像(sora.jpg)を使う。
thresholdメソッドの使い方
thresholdメソッドの使い方は次の通り。
[python title="filter2Dメソッドの使い方"]
cv2.threshold(img_src, thresh(閾値), 画素値の最大値, 二値化するためのタイプ)
[/python]
まず二値化するためのタイプとして選択できるのは以下の8種類。
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を作成する。
[python title="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()
[/python]
実行してみる。
[shell]
(opencv_python)$ python binarization.py
[/shell]
試しに二値化のタイプをTHRESH_BINARYからTHRESH_TOZEROに変えた結果は以下のとおり。
ちょっと印象的?
ディスカッション
コメント一覧
まだ、コメントがありません