使用Python将图片转正方形的两种方法实例代码详

使用Python将图片转正方形的两种方法实例代码详解

在进行图片处理的过程中,需要对图片进行裁剪,有时需要将图片裁剪为正方形。本文将介绍两种使用Python将图片转换为正方形的方法。

方法一:使用Pillow库

Python的Pillow库是Python Imaging Library的一个分支,提供了更方便的图像处理工具。使用这个库,我们可以很容易地将图片转化为正方形。

步骤一:打开图片

首先,我们需要使用Pillow库中的Image.open()方法打开图片。在这个方法中需要传入图片的路径。代码示例如下:

from PIL import Image

img_path = 'example.jpg'

img = Image.open(img_path)

在这个示例中,我们使用了Pillow库中的Image.open()方法打开了名为example.jpg的图片,并将该图片赋值给了变量img。

步骤二:检查图片是否为正方形

接下来我们需要检查图片是否为正方形。如果图片为正方形,我们就无需对其进行裁剪。

我们首先获得图片的宽度和高度,如果宽度等于高度,就说明图片已经是正方形了。代码示例如下:

width, height = img.size

if width == height:

pass # 不需要裁剪

步骤三:将图片裁剪为正方形

如果图片不是正方形,我们需要对其进行裁剪。我们可以在图片的中心位置裁剪一个正方形区域,使图片变为正方形。

假设我们要裁剪出的正方形边长为min(width, height),代表图片中长宽相对短的那个长度。我们可以通过如下代码进行裁剪:

edge_length = min(width, height)

left = (width - edge_length) / 2

top = (height - edge_length) / 2

right = (width + edge_length) / 2

bottom = (height + edge_length) / 2

img = img.crop((left, top, right, bottom))

在这个示例中,我们首先计算出了正方形的边长edge_length。然后,我们计算出了裁剪区域的左上角坐标为(left, top),右下角坐标为(right, bottom)。最后,我们使用img.crop()方法将指定区域的图片裁剪出来。将裁剪得到的图片赋值给img变量。

步骤四:保存图片

最后,我们需要将裁剪得到的正方形图片保存下来,代码示例如下:

img.save('square.jpg')

在这个示例中,我们使用了img.save()方法将裁剪得到的正方形图片保存为square.jpg文件。

方法二:使用OpenCV库

OpenCV是一个开源的计算机视觉库,在进行图像处理方面非常强大。我们可以使用OpenCV库将图片裁剪为正方形。

步骤一:导入库

相比Pillow库,使用OpenCV库需要先导入一些库。代码示例如下:

import cv2

import numpy as np

在这个示例中,我们分别导入了cv2和numpy库。

步骤二:读取图片

我们需要使用cv2.imread()方法读取图片。代码示例如下:

img_path = 'example.jpg'

img = cv2.imread(img_path)

在这个示例中,我们使用cv2.imread()方法读取了名为example.jpg的图片,并将该图片赋值给了变量img。

步骤三:将图片裁剪为正方形

OpenCV库提供了很方便的图片处理方法。我们可以使用cv2.resize()方法将图片裁剪为正方形。代码示例如下:

width, height = img.shape[:2]

edge_length = min(width, height)

x = (width - edge_length) / 2

y = (height - edge_length) / 2

new_img = img[y:y+edge_length, x:x+edge_length]

new_img = cv2.resize(new_img, (500, 500))

在这个示例中,我们首先获取图片的宽度和高度。然后,我们计算出了裁剪正方形的左上角坐标。接着,我们使用img[y:y+edge_length, x:x+edge_length]将指定区域的图片裁剪出来。最后,我们使用cv2.resize()方法将图片缩放成500x500的正方形。

步骤四:保存图片

最后,我们需要将裁剪得到的正方形图片保存下来,代码示例如下:

cv2.imwrite('square.jpg', new_img)

在这个示例中,我们使用cv2.imwrite()方法将裁剪得到的正方形图片保存为square.jpg文件。

总结

本文介绍了两种使用Python将图片转换为正方形的方法。第一种方法使用了Pillow库,第二种方法使用了OpenCV库。两种方法都比较简单,可以根据自己的需要进行选择。

后端开发标签