前提・実現したいこと
画像から対象物のみを二値化することで切り抜きたい。
発生している問題・エラーメッセージ
対象物と背景との色の差がほぼないので閾値を変えることでは対象物と背景を分けることができないため、対象物の周りのみある閾値で二値化し対象物を1、そしてその周りを0に二値化しようと考えました。
そこで調べたところInRangeを用いれば実現可能と考えたのですが、グレースケールでの方法が私の能力不足から理解できなかったため質問させていただきました。
(https://www.pynote.info/entry/opencv-inrange)
該当のソースコード
import cv2
import matplotlib.pyplot as plt
import numpy as np
rc = cv2.imread("sample.png")
dst = cv2.inRange(src, (0, 0, 49), (255, 255, 255))
fig, ax = plt.subplots(facecolor="w")
ax.imshow(dst, cmap="gray")
plt.show()
試したこと
上のコードから考えてみたのですが、cv2.inRange(src, (0, 0, 49), (255, 255, 255))
の部分で範囲を指定していると思うのですが、この49の意味があまりわかりません。
それ以外にも対象物のない背景のみの画像もあるのでpythonで対象物のある画像から背景の画像を引いた後にある値で二値化してみましたが、背景と対象物の色の値が近いのでうまくいきませんでした。
勉強不足でうまく言葉を使えていないかもしれませんが、お答えいただけると幸いです。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/02 09:51
2019/11/02 11:12