Python OpenCV3で画像の画素値を二値化して出力

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

画像を二値化(Binarization)する方法を紹介。

 

前提

ディレクトリ構成などはこことかこことか。

&nbsp

元画像

空の画像(sora.jpg)を使う。

sora

 

thresholdメソッドの使い方

thresholdメソッドの使い方は次の通り。

cv2.threshold(img_src, thresh(閾値), 画素値の最大値, 二値化するためのタイプ)

まず二値化するためのタイプとして選択できるのは以下の8種類。

上の全てではないが、一部の画素値と閾値の関係は以下の図の通り。

binarization_type

 

閾値を変更することで、二値化するときの画素数の基準を変更できる。
画素数の最大値は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

スクリーンショット 2015-07-06 0.08.46

 

試しに二値化のタイプをTHRESH_BINARYからTHRESH_TOZEROに変えた結果は以下のとおり。

スクリーンショット 2015-07-06 0.08.17

 

ちょっと印象的?

 

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です