opencv チュートリアルチャレンジ3 画像のしきい値処理
画像のしきい値処理 — OpenCV-Python Tutorials 1 documentation
元画像
cv2.threshold
この関数は,シングルチャンネルの配列に対して,ある定数での閾値処理を行います.これは,グレースケールからの2値画像生成(関数 compare も,この目的に利用できます)やノイズ除去(つまり,小さすぎたり大きすぎたりする値をはじく処理)などに利用される場合が多いです.この関数がサポートする閾値処理にはいくつかの種類があり,それは引数 thresholdType によって決定されます:
double threshold(const Mat& src, Mat& dst, double thresh, double maxVal, int thresholdType) 配列の要素に対して,ある定数での閾値処理を行います. パラメタ: src – 入力配列(シングルチャンネル,8ビット,あるいは32ビット浮動小数点型). dst – src と同じサイズ,同じ型の出力配列. thresh – 閾値. maxVal – 閾値処理の種類が THRESH_BINARY や THRESH_BINARY_INV の場合に利用される,最大値の値. thresholdType – 閾値処理の種類(以下の説明を参照してください).
やってみる
ret, img = cv2.threshold(img, 60, 255, cv2.THRESH_BINARY)
ret, img = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY)
cv2.adaptiveThreshold
適応的閾値処理
void adaptiveThreshold(const Mat& src, Mat& dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C) 配列に対して,適応的な閾値処理を行います. パラメタ: src – 8ビット,シングルチャンネルの入力画像. dst – src と同じサイズ,同じ型の出力画像. maxValue – 条件を満足するピクセルに割り当てられる非0の値.説明を参照してください. adaptiveMethod – 利用される適応的閾値アルゴリズム: ADAPTIVE_THRESH_MEAN_C または ADAPTIVE_THRESH_GAUSSIAN_C (説明を参照してください). thresholdType – 閾値の種類. THRESH_BINARY または THRESH_BINARY_INV のどちらか. blockSize – ピクセルの閾値を求めるために利用される近傍領域のサイズ.3, 5, 7, など. C – 平均または加重平均から引かれる定数(説明を参照).通常,これは正値ですが,0や負値の可能性もあります.
やってみる
img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 15, 20)