繁体   English   中英

Python:灰度图像:使所有内容变为白色,黑色像素除外

[英]Python: Greyscale image: Make everything white, except for black pixels

我试图打开(已经是灰度)图像并将所有非黑色像素更改为白色像素。 我实现了以下代码:

from scipy.misc import fromimage, toimage
from PIL import Image
import numpy as np

in_path = 'E:\\in.png'
out_path = 'E:\\out.png'

# Open gray-scale image
img = Image.open(in_path).convert('L')

# Just for testing: The image is saved correct
#img.save(out_path)

# Make all non-black colors white
imp_arr = fromimage(img)
imp_arr = (np.ceil(imp_arr / 255.0) * 255.0).astype(int)

# Save the image
img = toimage(imp_arr, mode='L')
img.save(out_path)

使除黑色像素外的所有像素均为白色的计算非常简单且也非常快。 对于我的用例来说,非常快速地工作非常重要,因此我使用了numpy。 由于某种原因,此代码不适用于所有图像吗?

一个示例:下图是输入。

在此处输入图片说明

它包含一个灰色矩形和一个白色边框。 输出应该是完整的白色图像,但是由于某种原因,输出是黑色图像:

在此处输入图片说明

使用其他图像,效果很好。 我做错了什么? 我认为浮点数在这里不应该成为大问题,因为此代码不需要很高的计算精度即可工作。

非常感谢你

toimage需要一个字节数组,因此请转换为uint8而不是int:

imp_arr = (np.ceil(imp_arr / 255.0) * 255.0).astype('uint8')

如果输出中包含黑白像素,我似乎为int工作,但如果它们都是白色,则不是。 我在文档中找不到对此的任何解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM