scikit-image将二进制图像保存为完全黑色图像

时间:2016-03-24 17:24:40

标签: python image scikit-image

所以,我试图用scikit-image获取二进制图像,并使用以下代码将其保存在磁盘上:

gray = color.rgb2gray(img)
thresh = filters.threshold_otsu(gray)
binary = gray >= thresh
io.imsave("./testout/" + img_name, binary)

当我做io.imshow(二进制)时,我得到了我的预期。但是imsave()会将完全黑色的图像返回给我,好像它会将rgb中的True和False值都转换为(0,0,0)。

那么正确的做法是什么?

3 个答案:

答案 0 :(得分:7)

from skimage import img_as_uint
# ...
io.imsave("./testout/" + img_name, img_as_uint(binary))

这似乎有效,但我不确定这是最好的方法。

此外,在scikit-image repo上打开了一个问题:https://github.com/scikit-image/scikit-image/issues/1623

答案 1 :(得分:0)

只需将binary转换为float即可达到目的:

binary = (gray >= thresh).astype(float)

答案 2 :(得分:0)

我更喜欢使用img_as_ubyte

from skimage import img_as_ubyte
io.imsave("demo.jpg", img_as_uint(binary))

此外,您不会看到来自Lossy conversion from uint16 to uint8. Losing 8 bits of resolution...的{​​{1}}警告