見出し画像

【画像解析】OpenCV使わず二値化(シンプル画像)

OpenCVで二値化するとしたら、多分入力画像をとりあえずグレースケールで濃淡表現にして、それを閾値で二値化する流れだと思う

import cv2
import numpy as np

# グレースケール
grayscale_ndarray = cv2.cvtColor(src_ndarray, cv2.COLOR_RGB2GRAY)
# よくある閾値128で二値化
threshold = 128
ret_hreshold, dst_ndarray = cv2.threshold(grayscale_ndarray, threshold, 255, cv2.THRESH_BINARY)

でもこの場合、shapeで形状を確認すると、入力画像ではrgb値を一階層とみなした(行数, 列数, チャンネル数)の3dとなるものが、(行,列)の2dタプルが戻される。

とりあえず、今回の入力画像がそもそもシンプルに白黒っぽい画像だったので、、、

# ndarrayのwhare()で条件処理
dst_ndarray = np.where((src_ndarray > 128) , 255, 0)

多分もっと良いやり方があるんだろうけど・・・

3dで二値化した画像が急ぎで欲しかったため、とりあえず、応急処置的な、臨時で画像を処理したかったので、こんな感じにしてみました、という言い訳

OpenCV側で、この辺をうまく処理する機構があるような気がする

暇があればまた更新します。

この記事が気に入ったらサポートをしてみませんか?