【Python × OpenCV4】画像を閾値で2値化する。

はじめに


画像処理エンジニア検定:エキスパートの学習用のメモ。

使用環境


● Anaconda
● Spyder4
● macOS High Sierra 10.13.6
● Python
● OpenCV

閾値の設定


OpenCVで閾値を設定するには、下記の関数を使用します。

cv2.threshold(img, thresh, maxval, threshType) # 閾値を設定する。

組んだプログラムは、下記になります。

import cv2

imageName = input("画像名を入力して下さい。\n")

img = cv2.imread("./img/" + imageName, cv2.IMREAD_GRAYSCALE)

thresh = 200

maxval = 255

threshType = cv2.THRESH_BINARY

def threshold(img, thresh, maxval, threshType):
    ret, dst = cv2.threshold(img, thresh, maxval, threshType)
    outputFileName = input("保存します。画像名を入力して下さい。\n")
    cv2.imwrite("./img/" + outputFileName, dst)
    cv2.imshow("thresh_show", dst)

threshold(img, thresh, maxval, threshType)

cv2.waitKey(0)
cv2.destroyAllWindows()

実行結果は、下記になります。

入力画像
パラメータ:thresh = 100, maxval = 255, threshType = cv2.THRESH_BINARY
パラメータ:thresh = 150, maxval = 255, threshType = cv2.THRESH_BINARY
パラメータ:thresh = 200, maxval = 255, threshType = cv2.THRESH_BINARY

各パラメータの意味は、下記になります。

thresh:閾値
maxval:最大値
threshType:閾値処理の種類

おわりに


cv2.threshold(img, thresh, maxval, threshType)を使用して閾値処理することが出来ました。

参考文献



いいなと思ったら応援しよう!