python pillow
我打开一张试卷的照片,想处理成黑字白底的样子,就像扫描软件上一样,但是现在有两种方式
一、点处理
def point_(self, filepath):
image = Image.open(filepath)
width, height = image.size
for x in range(width):
for y in range(height):
pixel = (pixel_color[0] * 30 + pixel_color[1] * 59 + pixel_color[2] * 11 + 50) / 100
if pixel < 101:
image.putpixel((x, y), 0)
else:
image.putpixel((x, y), 255)
image.save(path.join(self.output_dir, filepath.split("/")[-1]))
print(filepath, "处理完成")
它的速度太慢了
二、
def main(self, filepath):
image = Image.open(filepath)
image = image.convert("L")
image = image.point(lambda x: x > 150 and 255)
image = image.filter(ImageFilter.MinFilter)
image.save(path.join(self.output_dir, filepath.split("/")[-1]))
print(filepath, "处理完成")
这两种方法都有一个毛病,就是阈值的问题,在试卷的左上角是偏亮的,右下角是偏暗的,导致设置阈值不太方便,想过一些方法,但碍于不熟悉pillow库,不知道怎么实现,求 求有没有大 佬分享一下想法
原图: