PythonとOpenCVを使用して画像の二値化を行う方法について説明します。二値化は、画像を白と黒の2色に変換する処理で、画像解析や画像認識などに広く利用されています。
OpenCVの二値化
OpenCVでは、cv2.threshold
関数を使用して二値化を行います。この関数は、指定した閾値より大きい画素を一定の値(通常は255)に、それ以外の画素を0にします。
以下に、PythonとOpenCVを使用した二値化の基本的なコードを示します。
import cv2
# 画像の読み込み
img = cv2.imread("./data/Lena.jpg", 0)
# 閾値の設定
threshold = 100
# 二値化(閾値100を超えた画素を255にする)
ret, img_thresh = cv2.threshold(img, threshold, 255, cv2.THRESH_BINARY)
# 二値化画像の表示
cv2.imshow("img_th", img_thresh)
cv2.waitKey()
cv2.destroyAllWindows()
このコードでは、閾値を100と設定し、それを超える画素を255(白)に、それ以下の画素を0(黒)にしています。
自動閾値設定
閾値を自分で設定するのではなく、画像に応じて自動で閾値を設定する方法もあります。OpenCVでは、cv2.threshold
関数の引数にcv2.THRESH_OTSU
を指定することで、大津の二値化法を用いて自動的に閾値を設定することができます。
以下に、自動閾値設定を用いた二値化のコードを示します。
import cv2
# 画像の読み込み
img = cv2.imread("./data/Lena.jpg", 0)
# 二値化(大津の二値化法を使用)
ret2, img_otsu = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU)
# 閾値がいくつになったか確認
print("ret2: {}".format(ret2))
# 画像の確認
cv2.imshow("otsu", img_otsu)
cv2.waitKey()
cv2.destroyAllWindows()
このコードでは、大津の二値化法を用いて自動的に閾値が設定され、より自然な二値化画像が得られます。
以上、PythonとOpenCVを使用した画像の二値化について説明しました。二値化は、画像解析や画像認識などの基本的な技術であり、様々な応用が可能です。ぜひ活用してみてください。.