gpt4 book ai didi

python - 显示灰色的 BW 图像

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:12 25 4
gpt4 key购买 nike

我正在尝试将彩色图像转换为纯黑白。我环顾四周寻找一些代码来做到这一点并解决了

im = Image.open("mat.jpg")
gray = im.convert('L')
bw = gray.point(lambda x: 0 if x<128 else 255, '1')
bw.save("result_bw.jpg")

然而,结果还是有灰色!

所以,我试着自己做:

floskel = Image.open("result_bw.jpg")
flopix = floskel.load()

for i in range (0,floskel.size[0]):
for j in range (0, floskel.size[1]):
print flopix[i,j]
if flopix[i,j]>100:
flopix[i,j]=255
else:
flopix[i,j]=0

但是,图像中仍然存在灰色。

我做错了什么吗?

最佳答案

正如 sebdelsol 所提到的,直接在彩色源图像上使用 im.convert('1') 会好得多。标准的 PIL“抖动”是 Floyd-Steinberg 误差扩散,这通常非常好(取决于图像),但还有多种其他选项,例如随机抖动和有序抖动,尽管您必须自己编写代码,所以他们会慢很多。

您在 OP 的代码中使用的转换算法只是简单的阈值处理,虽然很容易编写,但通常会丢失很多的细节。但我想在这种情况下,您只是想确认您关于最终图像中存在灰色像素的理论。但正如 sebdelsol 所说,它只是看起来因为“噪音”而有灰色像素,即包含大量混合在一起的黑白像素的区域,如果你缩放,你应该能够验证进入图像。

FWIW,如果你确实想对整个图像进行自己的逐像素处理,使用 im.getdata() 获取像素列表并将它们放回图像与 im.putdata(),而不是做 flopix[i,j] 的东西。当然,如果您不需要知道坐标,使用 im.point() 的算法通常很快。

最后,JPEG 并不真正适合黑白图像,它专为具有(大部分)连续色调的图像而设计。尝试另存为 PNG;生成的文件可能比等效的 JPEG 文件小很多。可以通过使用低质量设置保存来减小 JPEG 文件的大小,但结果通常看起来不太好。

关于python - 显示灰色的 BW 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25795666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com