特定のグレースケール画像を表す特定のnp.array データがあります。 私はSimpleBlobDetector()を使用する必要があります。残念なことに8ビットイメージしか受け付けないので、このイメージを変換する必要があります。明らかに品質の低下があります。float64型のnp.arrayをuint8の倍率値に変換する
私はすでに試した:予想通り
import numpy as np
import cv2
[...]
data = data/data.max() #normalizes data in range 0 - 255
data = 255 * data
img = data.astype(np.uint8)
cv2.imshow("Window", img)
しかしcv2.imshowは終わりでは...しかし、奇妙な歪みと、
をイメージを与えていない、私はする必要がありnp.float64をnp.uint8に変換してすべての値をスケーリングし、残りの部分を切り捨てる。 65535は255になり、65534は254になります。
ありがとうございました。
どのような奇妙な歪みが起こっていますか?私には、正規化コードはうまくいくようです。 'data'の型は' np.float64'ですか?また、65535を255に変換すると、予想される入力タイプは 'np.float64'ではなく' np.uint16'と思われます。 – rayryeng
画像に細かい粒度があるように見えます。たとえば、黒い背景が灰色で不定形(???)になります。 代替候補がありますか? – decadenza
イメージの最大値ではなく、そのタイプが経験する最大値でイメージを分割することをお勧めします。私は答えを書いた。それが動作するかどうか私に教えてください。 – rayryeng