matplotlib显示图片与图片批量裁剪

这篇博客介绍了如何使用Python的matplotlib和PIL库进行图片处理。首先展示了如何读取并显示一张图片,然后通过遍历指定文件夹,对所有图片进行批量裁剪,裁剪中心区域为160*160像素,并将裁剪后的图片保存到新的目录下。
摘要由CSDN通过智能技术生成

1.显示图片

import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np

img = mpimg.imread('img/000002.png') # 读取图片(同目录)
# 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理
img.shape
plt.imshow(img) # 显示图片
#plt.axis('off') # 不显示坐标轴
plt.show()

在这里插入图片描述

2.图片批量裁剪放入对应目录

from PIL import Image
import os
import os.path
import numpy as np
import cv2

rootdir = r'img'#被遍历的文件夹
for parent, dirnames, filenames in os.walk(rootdir):#遍历每一张图片
    for filename in filenames:
        currentPath = os.path.join(parent, filename)#得到图片路径
        img = Image.open(currentPath)
        print (img.format, img.size, img.mode)#图片格式,大小、颜色模型
        #这里裁剪中心区域 160*160 具体参数根据自己情况进行调整
        box = (img.size[0]/2-80,img.size[1]/2-80,img.size[0]/2+80,img.size[1]/2+80)#参数分别的含义为与左边界的距离、与上边界的距离、还是与左边界的距离、还是与上边界的距离
        #img.show()
        image1 = img.crop(box) # 图像裁剪
        image1.save(r"img_resize 160"+'\\'+filename) #存储裁剪后的图像
### 回答1: 首先,你需要安装以下库:PyTorch、torchvision、Pillow、ipywidgets、numpy。 然后,你可以按照以下步骤编写代码: 1. 导入所需库 ```python import torch import torchvision from PIL import Image import ipywidgets as widgets import numpy as np ``` 2. 加载模型 ```python model = torch.load('model.pth', map_location=torch.device('cpu')) model.eval() ``` 需要注意的是,如果你的模型是在GPU上训练的,需要将map_location参数设置为torch.device('cuda')。 3. 定义分类标签 ```python classes = ['cat', 'dog', 'bird', 'fish'] ``` 4. 定义图片预处理函数 ```python preprocess = torchvision.transforms.Compose([ torchvision.transforms.Resize((224, 224)), torchvision.transforms.ToTensor(), torchvision.transforms.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225] ) ]) ``` 5. 定义识别函数 ```python def predict(image_path): image = Image.open(image_path) image_tensor = preprocess(image) image_tensor = image_tensor.unsqueeze(0) with torch.no_grad(): output = model(image_tensor) _, predicted = torch.max(output.data, 1) return classes[predicted.item()] ``` 6. 定义界面 ```python image_upload = widgets.FileUpload( accept='image/*', multiple=False ) output = widgets.Output() def on_upload_change(change): if change.new: image = change.new[0] with output: output.clear_output() display(image_upload) display(widgets.Image(value=image['content'])) predicted_class = predict(image['content']) print(f'Predicted class: {predicted_class}') image_upload.observe(on_upload_change, names='value') display(image_upload) display(output) ``` 7. 运行代码 将以上代码保存为一个.ipynb文件,使用jupyter notebook打开并运行该文件。在界面中上传一张图片,即可看到预测结果。 需要注意的是,该界面只能识别模型中定义的分类标签。如果你的模型是针对其他分类问题训练的,需要修改classes列表。同时,该界面只支持单张图片的识别。如果需要批量识别,需要进行相应修改。 ### 回答2: 使用 Jupyter 编写一个简单的图片识别界面并加载 pth 模型的步骤如下: 1. 导入所需的库 在代码的开头,你需要导入一些必要的库。例如,你需要导入 torch 库来加载 pth 模型,导入 torchvision 库来处理图像,导入 matplotlib 库来显示图像结果等。 2. 加载模型 使用 torch 库中的 `torch.load()` 函数加载 pth 模型文件,并将其保存在一个变量中。 ```python model = torch.load('model.pth') ``` 3. 图像预处理 在对图像进行预测之前,需要对图像进行预处理。你可以使用 torchvision 库中的 `transforms` 模块来进行预处理。例如,你可以将图像转换为张量,然后对其进行归一化等操作。 ```python transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) ]) image = transform(image) ``` 4. 图像预测 使用加载的模型对预处理后的图像进行预测。你可以使用 `model.eval()` 将模型切换到评估模式,然后使用 `model(image)` 来对图像进行预测。最后,将预测结果保存在一个变量中。 ```python model.eval() with torch.no_grad(): outputs = model(image) _, predicted = torch.max(outputs, 1) ``` 5. 显示结果 最后,你可以使用 matplotlib 库来显示预测结果。例如,你可以使用 `plt.imshow(image)` 显示原始图像,然后使用 `plt.title(classes[predicted])` 显示预测结果的类别。 ```python classes = ['cat', 'dog', 'bird'] # 根据你的模型修改类别列表 plt.imshow(image) plt.title(classes[predicted]) plt.show() ``` 以上是使用 Jupyter 编写一个简单的图片识别界面并加载 pth 模型的基本步骤。你可以根据你自己的需求对代码进行修改和扩展。 ### 回答3: 要使用Jupyter写一个简单的图片识别界面,模型类型为.pth,你可以按照以下步骤操作: 1.首先,在Jupyter中创建一个新的Python笔记本。 2.导入所需的库,包括torch、torchvision和PIL。 3.加载已训练好的.pth模型文件。你可以使用torch.load函数从文件中加载模型。 4.定义一个函数,用于读取和预处理图像。你可以使用PIL库中的Image模块来打开图像文件,并对图像进行缩放、裁剪、标准化等预处理操作。将预处理后的图像转换为模型所需的张量格式。 5.定义一个函数,使用加载的模型对预处理后的图像进行推理。将预处理后的图像作为输入,利用模型进行预测,并返回预测结果。 6.加载并显示一张要进行识别的图像。使用PIL库的Image模块打开图像文件,并调用matplotlib库的imshow函数显示图像。 7.调用预处理和推理函数,对图像进行预处理并进行识别。将图像的文件路径作为输入,得到预测结果。 8.打印预测结果。 9.完成后,你可以在Jupyter笔记本中更改图像的路径,以进行新的图像识别。 这是一个简单的图片识别界面的基本过程。你可以根据需要进行修改和优化,添加更多的功能和界面设计。希望这对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值