Pillow库和OpenCV库都可以实现图片裁剪。使用Pillow库,可以通过Image模块的crop()方法进行裁剪;使用OpenCV库,可以通过img属性的numpy数组切片操作进行裁剪。
使用Pillow库进行图片裁剪

(图片来源网络,侵删)
Pillow是Python的一个图像处理库,提供了丰富的图像操作功能,以下是使用Pillow库进行图片裁剪的示例代码:
from PIL import Image
def crop_image_pillow(image_path, output_path, left, upper, right, lower):
"""
使用Pillow库裁剪图片。
参数:
image_path (str): 输入图片的路径。
output_path (str): 输出裁剪后的图片路径。
left (int): 裁剪区域的左边界坐标。
upper (int): 裁剪区域的上边界坐标。
right (int): 裁剪区域的右边界坐标。
lower (int): 裁剪区域的下边界坐标。
"""
with Image.open(image_path) as img:
cropped_img = img.crop((left, upper, right, lower))
cropped_img.save(output_path)
示例用法
crop_image_pillow("input.jpg", "output.jpg", 100, 100, 300, 300)
使用OpenCV库进行图片裁剪
OpenCV是一个开源计算机视觉库,也提供了图像处理的功能,以下是使用OpenCV库进行图片裁剪的示例代码:
import cv2
def crop_image_opencv(image_path, output_path, x, y, width, height):
"""
使用OpenCV库裁剪图片。
参数:
image_path (str): 输入图片的路径。
output_path (str): 输出裁剪后的图片路径。
x (int): 裁剪区域的左上角x坐标。
y (int): 裁剪区域的左上角y坐标。
width (int): 裁剪区域的宽度。
height (int): 裁剪区域的高度。
"""
img = cv2.imread(image_path)
cropped_img = img[y:y+height, x:x+width]
cv2.imwrite(output_path, cropped_img)
示例用法
crop_image_opencv("input.jpg", "output.jpg", 100, 100, 200, 200)
相关问题与解答
Q1: 如何调整裁剪区域的大小?

(图片来源网络,侵删)
A1: 在上述代码中,裁剪区域的大小由width和height参数控制,要调整裁剪区域的大小,只需修改这两个参数的值即可,将width设置为300,height设置为400,则裁剪区域的大小将为300x400像素。
Q2: 如何裁剪特定比例的区域?
A2: 如果要裁剪特定比例的区域,可以先计算原始图片的宽度和高度,然后根据所需的比例计算出裁剪区域的宽度和高度,如果要裁剪原图的四分之一区域,可以按照以下方式计算:
original_width, original_height = img.shape[1], img.shape[0] crop_width = int(original_width * 0.5) crop_height = int(original_height * 0.5)
可以使用这些计算出的宽度和高度来调用裁剪函数。

(图片来源网络,侵删)