この記事では、Python+SciPy+NumPyを用いて、画像を2値化する方法をソースコード付きで解説します。
画像の2値化
SciPyで読み込んだ画像をNumPy配列に格納し、NumPyで2値化処理してみました。
ソースコード
サンプルプログラムのソースコードです。(Python3+SciPy+NumPy)
# -*- coding: utf-8 -*-
import numpy as np
from scipy import ndimage
import matplotlib.pyplot as plt
def main():
# 入力画像をグレースケールで読み込み
img = ndimage.imread('input.jpg', mode='L')
# 入力画像をコピー
th = img.copy()
# 2値化
img[img<160] = 0
img[img>=160] = 255
# 入力画像と2値化画像をグラフにプロット
plt.subplot(121)
plt.imshow(img, cmap = 'gray')
plt.title('Input Image')
plt.subplot(122)
plt.imshow(th, cmap = 'gray')
plt.title('Result Image')
plt.show()
if __name__ == "__main__":
main()
実行結果
サンプルプログラムの実行結果です。
■入力画像(左)と出力画像(右)

おすすめ記事
PythonでOpenCV入門 サンプル集
【Python】画像処理プログラミング入門
【画像処理入門】アルゴリズム&プログラミング

コメント