开向幼儿园的车 2024-03-27 20:25 采纳率: 81.8%
浏览 3

Python pillow 图处理

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库,不知道怎么实现,求 求有没有大 佬分享一下想法
原图:

img

  • 写回答

3条回答 默认 最新

  • 专家-皆知 2024-03-27 20:25
    关注

    引自免费微信小程序:皆我百晓生

    首先,我们需要处理图片的背景色,使其变成黑色。在Pillow库中,我们可以使用Image.putalpha()方法将图片的透明度设置为0,这样就可以将背景色设置为黑色。

    对于点处理的方法,我们可以通过putpixel()方法将每个像素的像素值设置为0或255,0表示黑色,255表示白色。对于这种方法,我们需要确保在处理每个像素时,都将其设置为黑色。

    对于第二种方法,我们可以使用Image.convert()方法将图片的格式转换为灰度图,然后使用point()方法将亮度大于150的像素设置为255,其他像素设置为0。最后使用filter()方法将图片的亮度降低,使其偏暗。

    这两种方法都可以实现将图片处理成黑字白底的效果,只是实现方式不同。你可以根据自己的需求选择使用哪种方法。

    对于阈值的问题,你可以通过putpixel()方法将图片的像素值设置为0或255来实现。如果像素值大于150,就将其设置为255,否则就设置为0。这样就可以实现阈值处理的效果。

    希望这些信息对你有所帮助。如果你有其他问题,欢迎继续提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月27日

悬赏问题

  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动