geekdoc-python-zh/docs/askpython/crop-an-image-in-python.md

3.2 KiB
Raw Permalink Blame History

如何在 Python 中裁剪图像

原文:https://www.askpython.com/python/examples/crop-an-image-in-python

你好!在这篇文章中,我们将关注 Python 中裁剪图像的不同方法。现在,让我们揭开和理解背景函数被用来裁剪图像。


技巧 1: Python PIL 裁剪图像

PIL 代表“ Python 图像库”。PIL 在 python 解释器中增加了图像编辑格式化功能。因此,它具有许多用于图像处理和图形分析的内置功能。

PIL 内置了裁剪图像矩形部分的功能。

语法:

Image.crop(left, top, right, bottom)

  • topleft:这些参数代表左上坐标,即(xy) = (lefttop)。
  • bottomright:这些参数代表右下角坐标,即(xy) =(右,下)。

要裁剪的区域如下所示:

  • 左< = x <右
  • 顶部< = y <底部

举例:

from PIL import Image 

img = Image.open(r"C:\Users\HP\OneDrive\Desktop\<image>.png") 

left = 0
top = 50
right = 510
bottom = 292

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

img_res.show() 

在上面的例子中,Image.open(r"image path")是 PIL 在读取模式下打开图像的函数。

我们已经为左、右、上、下坐标分配了特定的值。

Image.show()功能用于显示裁剪后的图像。

原始图像:

Image Used For Cropping Purpose

Image Used For Cropping Purpose

裁剪后的图像(输出):

Cropped Image Using PIL

Cropped Image Using PIL


技术 2:使用 OpenCV 在 Python 中裁剪图像

Python OpenCV 是一个拥有大量可用于实时计算机视觉的函数的库。它包含了一套很好的函数来处理图像的处理和操作。

为了使用 OpenCV 处理图像,用户需要安装版本为3.0 和更高版本的 OpenCV 库。

首先,我们需要使用下面的代码片段在我们的程序中导入 OpenCV 库:

import cv2

OpenCV 实际上在裁剪图像的方法中对作为数组传递的图像进行切片。

语法:

image[start_x:end_x, start_y:end_y]

  • image[] 实际上是通过传递 x 和 y 坐标的起始和结束索引,以数组的形式对图像进行切片。
  • 因此x 和 y 的起始和结束坐标之间的图像作为裁剪的数组对象返回。

举例:

import cv2
image = cv2.imread(r"C:\Users\HP\OneDrive\Desktop\<image>.png")

y=0
x=0
h=300
w=510
crop_image = image[x:w, y:h]
cv2.imshow("Cropped", crop_image)
cv2.waitKey(0)

cv2.imread(r"image path")功能用于在读取模式下打开图像。

此外,提供了 x 轴和 y 轴的开始和结束索引,因此图像被裁剪。

cv2.imshow()功能用于显示裁剪后的图像。我们在这里使用了与之前相同的图像。

裁剪后的图像(输出):

Cropped Image Using OpenCV

Cropped Image Using OpenCV


结论

因此,在本文中,我们已经了解了用 Python 裁剪图像的方法。


参考