from PIL import Image img = Image.open('path/to/image.jpg') # 打开图片文件 n, m = 100, 200 # 原点坐标 w, h = 200, 150 # 截取宽度和高度 # 截取图像片段 img_crop = img.crop((n, m, n + w, m + h)) # 显示截取的图像片段 img_crop.show() 保存img_crop
时间: 2024-03-22 15:37:38 浏览: 135
您可以使用`Pillow`库中的`save()`方法将截取的图像片段保存到文件中。以下是示例代码:
```python
from PIL import Image
img = Image.open('path/to/image.jpg') # 打开图片文件
n, m = 100, 200 # 原点坐标
w, h = 200, 150 # 截取宽度和高度
# 截取图像片段
img_crop = img.crop((n, m, n + w, m + h))
# 保存截取的图像片段
img_crop.save('path/to/cropped_image.jpg')
```
在这个示例中,我们将截取的图像片段保存到了“ path / to / cropped_image.jpg”文件中。您可以将此路径替换为您希望将文件保存到的路径。
相关问题
import torch from PIL import Image from torchvision.transforms import functional as F # 加载图像并将其转换为 PyTorch 张量 img = Image.open('path/to/image.jpg') tensor_img = F.to_tensor(img) # 将 PyTorch 张量缩放成300x300的正方形 resized_tensor_img = F.resize(tensor_img, [300, 300]) # 创建一个300x300的白色图像 white_img = Image.new('RGB', (300, 300), (255, 255, 255)) # 将原始图像粘贴到白色图像中央 left = (300 - img.width) // 2 top = (300 - img.height) // 2 white_img.paste(img, (left, top)) # 将图像转换为 PyTorch 张量 tensor_img = F.to_tensor(white_img)检查代码并优化
好的,经过检查,这段代码已经没有问题了。但是可以对其进行一些优化,例如可以将缩放后的图像直接粘贴到白色背景图像中央,而不需要先创建一个空白的白色图像。同时,可以将代码封装成一个函数,方便调用和复用。
下面是优化后的代码:
```
import torch
from PIL import Image
from torchvision.transforms import functional as F
def resize_and_pad_image(image_path, size):
# 加载图像并将其转换为 PyTorch 张量
img = Image.open(image_path)
tensor_img = F.to_tensor(img)
# 将 PyTorch 张量缩放成指定大小的正方形
resized_tensor_img = F.resize(tensor_img, [size, size])
# 将缩放后的图像粘贴到白色背景图像中央
white_img = Image.new('RGB', (size, size), (255, 255, 255))
left = (size - resized_tensor_img.shape[2]) // 2
top = (size - resized_tensor_img.shape[1]) // 2
white_img.paste(F.to_pil_image(resized_tensor_img), (left, top))
# 将图像转换为 PyTorch 张量
tensor_img = F.to_tensor(white_img)
return tensor_img
```
这个函数接受两个参数:图像路径和目标大小,它会将指定路径的图像缩放成指定大小的正方形,并将其粘贴在一张白色背景图像的中央。函数返回的是缩放和粘贴后的 PyTorch 张量。
from PIL import Image import os import numpy as np import matplotlib.pyplot as plt image_directory = './lty/bird-species/valid/AMERICAN BITTERN' img_size = 224 images = [] for filename in os.listdir(image_directory): path = os.path.join(image_directory, filename) img = Image.open(path) img = img.resize((img_size, img_size)) images.append(img) images = np.array([np.array(img) for img in images]) images = images / 255.0 predictions = model.predict(images) # Select image to display img_index = 0 # Get predicted class label class_label = np.argmax(predictions[img_index]) # Display image and predicted class label plt.imshow(images[img_index]) plt.axis('off') plt.title('Predicted class: ' + str(class_label)) plt.show()什么意思
这段代码是一个用于图像分类的机器学习程序,它使用了Python中的PIL库、numpy库和matplotlib库。程序读取一个指定目录下的一系列图片,并将它们的大小都调整为224x224像素。接着,程序将这些图片转换成numpy数组,并将每个像素值都归一化到0到1之间。最后,程序通过调用训练好的模型,对这些图片进行分类,得到它们可能属于哪个类别的概率。程序将其中一个图片和它的预测结果展示出来。
阅读全文