Why am I getting "ValueError: Wrong number of lut entries"?
Why am I getting "ValueError: Wrong number of lut entries"?
我正在尝试构建一个非常简单(甚至可能没有用)的图像降噪器,但我遇到了这段特定代码的问题:
im=Image.open("Test.jpg")
width=im.size[0]
Lim=im.convert("L")
threshold = 250
table = []
for i in range(width):
if i < threshold:
table.append(0)
else:
table.append(1)
Bim=Lim.point(table, "1")
Bim.save("BINvalue.bmp","BMP")
它给我这个错误:
ValueError: Wrong number of lut entries
我是不是漏掉了一些非常简单的东西?还是整件事都错了?我还是一名学生,在 Python.
方面没有太多经验
Image.point()
方法采用查找 table 或函数对每个像素进行操作。
查找 table 可能有点复杂。所以推荐使用函数。该函数适用于每个像素。
from PIL import Image
im=Image.open("Test.jpg")
width=im.size[0]
Lim=im.convert("L")
threshold = 250
# if pixel value smaller than threshold, return 0 . Otherwise return 1.
filter_func = lambda x: 0 if x < threhold else 1
Bim=Lim.point(filer_func, "1")
Bim.save("BINvalue.bmp","BMP")
我们使用 Image.point()
函数将灰度图像变成黑色,white.The 函数有两个参数,第一个参数是一个查找 table 确定转换 rules.The table会检测图像每个像素点的灰度值,根据阈值和灰度值的比较,重新赋值为1/0。
如果你使用循环函数构造一个table,你需要将你的循环范围限制在灰度值的数量而不是你的image.You的大小可以改变你的循环函数像这个:
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
也许你可以参考这个Image.point()
我正在尝试构建一个非常简单(甚至可能没有用)的图像降噪器,但我遇到了这段特定代码的问题:
im=Image.open("Test.jpg")
width=im.size[0]
Lim=im.convert("L")
threshold = 250
table = []
for i in range(width):
if i < threshold:
table.append(0)
else:
table.append(1)
Bim=Lim.point(table, "1")
Bim.save("BINvalue.bmp","BMP")
它给我这个错误:
ValueError: Wrong number of lut entries
我是不是漏掉了一些非常简单的东西?还是整件事都错了?我还是一名学生,在 Python.
方面没有太多经验Image.point()
方法采用查找 table 或函数对每个像素进行操作。
查找 table 可能有点复杂。所以推荐使用函数。该函数适用于每个像素。
from PIL import Image
im=Image.open("Test.jpg")
width=im.size[0]
Lim=im.convert("L")
threshold = 250
# if pixel value smaller than threshold, return 0 . Otherwise return 1.
filter_func = lambda x: 0 if x < threhold else 1
Bim=Lim.point(filer_func, "1")
Bim.save("BINvalue.bmp","BMP")
我们使用 Image.point()
函数将灰度图像变成黑色,white.The 函数有两个参数,第一个参数是一个查找 table 确定转换 rules.The table会检测图像每个像素点的灰度值,根据阈值和灰度值的比较,重新赋值为1/0。
如果你使用循环函数构造一个table,你需要将你的循环范围限制在灰度值的数量而不是你的image.You的大小可以改变你的循环函数像这个:
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
也许你可以参考这个Image.point()