geekdoc-python-zh/docs/pythonlibrary/enhancing-photos-with-pytho...

6.2 KiB

使用 Python 增强照片

原文:https://www.blog.pythonlibrary.org/2017/10/24/enhancing-photos-with-python/

有时当你拍照时,你会发现它并不是你想要的。这幅画看起来很棒,但就是有点太暗了。或者有点模糊,需要增加锐度。锐度问题现在已经不那么糟糕了,因为很多相机在拍照后会自动为你增加锐度。

无论如何,在这篇文章中,我们将学习如何做到以下几点:

  • 如何调整照片的亮度
  • 如何改变图像的对比度
  • 如何锐化照片

您首先需要的是可以使用 pip 安装的枕头包:


pip install Pillow

现在我们已经安装了枕头,我们可以开始了!


改变亮度

我个人认为这张照片看起来很好,但出于演示的目的,让我们试着让这张照片变亮。增强照片的关键是使用 Pillow 的 ImageEnhance 模块。让我们来看看:


from PIL import Image
from PIL import ImageEnhance

def adjust_brightness(input_image, output_image, factor):
    image = Image.open(input_image)
    enhancer_object = ImageEnhance.Brightness(image)
    out = enhancer_object.enhance(factor)
    out.save(output_image)

if __name__ == '__main__':
    adjust_brightness('lighthouse.jpg',
                      'output/lighthouse_darkened.jpg',
                      1.7)

这里我们从 Pillow 导入我们需要的图片,然后在函数中打开输入的图片。接下来我们需要创建一个“增强器”对象。在这种情况下,我们使用 ImageEnhance 的 Brightness 类,并将我们的 image 对象传递给它。接下来我们调用 enhance() 方法,并赋予它增强因子。根据枕头文档,你需要一个大于 1.0 的系数来增加照片的亮度。如果你只是给它一个 1.0 的因子,那么它将返回原始图像不变。

如果您运行这段代码,您将得到类似这样的结果:

您也可以将低于 1.0 的增强因子向下传递到 0.0。根据文档,如果一直降到 0.0,您将收到一个完全黑色的图像。只是为了好玩,试着将上面代码中的增强因子改为 0.7。如果你这样做了,那么你会得到以下结果:

现在让我们试着给图片增加一些对比度!


调整图像的对比度

我以前拍过一些非常暗的照片,并且能够通过给照片增加亮度和对比度来保存它们。在这个例子中,我们将只增加这张可爱的毛毛虫照片的对比。但是,您也可以通过将下面的代码与前面的示例相结合来轻松增加亮度:


from PIL import Image
from PIL import ImageEnhance

def adjust_contrast(input_image, output_image, factor):
    image = Image.open(input_image)
    enhancer_object = ImageEnhance.Contrast(image)
    out = enhancer_object.enhance(factor)
    out.save(output_image)

if __name__ == '__main__':
    adjust_contrast('caterpillar.jpg',
                    'output/caterpillar_more_contrast.jpg',
                    1.7)

这段代码非常类似于增亮函数。唯一的区别是,这里我们使用的是 ImageEnhance 模块中的对比度类,而不是亮度类。当我运行这段代码时,我得到了以下增强:

ImageEnhance 模块中的所有类都以相同的方式运行。如果您碰巧尝试将增强值 1.0 传递给它,您只是得到原始图像,没有添加任何调整。但是如果你从 0.0 到 1.0,你会降低对比度。您可以自己尝试增强因子,看看可以对自己的图像进行什么样的更改。我试着把它改成 0.7,结果是这样的:

现在我们准备学习锐化照片!


更改照片的清晰度

我很少锐化模糊的照片,因为我很少发现它有帮助。然而,你可以锐化照片,使它看起来不同,在一个愉快的方式。让我们看看如何使用 Python 和 Pillow 来实现这一点:


from PIL import Image
from PIL import ImageEnhance

def adjust_sharpness(input_image, output_image, factor):
    image = Image.open(input_image)
    enhancer_object = ImageEnhance.Sharpness(image)
    out = enhancer_object.enhance(factor)
    out.save(output_image)

if __name__ == '__main__':
    adjust_sharpness('mantis.png',
                     'output/mantis_sharpened.jpg',
                     1.7)

同样,唯一的变化是使用 ImageEnhance 的 Sharpness 类,而不是其他选择之一。同样像以前一样,我们需要使用一个大于 1.0 的增强因子来增加清晰度。结果如下:

实际上我有点喜欢这个的结局。你也可以通过使用小于 1.0 的增强因子来模糊图像,但我认为这只会使图像变得相当暗淡。尽管如此,你也可以随意摆弄这些值。


包扎

Pillow 包有这么多使用 Python 编程语言编辑和增强照片的简洁功能。试用起来也超级快。您应该给这些脚本一个旋转,并尝试增强因子,看看您自己能做些什么。还有一个颜色类,我没有在这里介绍,你也可以用它来增强你的照片。开心快乐编码!


相关阅读