我试图打开(已经是灰度)图像并将所有非黑色像素更改为白色像素。我执行下面的代码:Python:灰度图像:使一切变白,除了黑色像素
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。出于某种原因,此代码不适用于所有图像?
举例:下图是输入。
它包含了一个灰色的矩形,也有白色边框。输出应该是一个完整的白色图像,但由于某种原因,输出的是黑色图像:
随着它工作得非常好一些其它图像。我做错了什么?我认为在这里浮点不应该是一个大问题,因为这个代码不需要很高的计算精度来工作。
非常感谢您
我没有看到任何错误。我建议把这个计算分解成几部分,并从每一部分中打印出几个有代表性的像素。 –