python图像批处理旋转90
时间: 2024-10-15 12:01:38 浏览: 31
在Python中,我们可以使用PIL (Python Imaging Library) 或其更新版Pillow库来进行图像的批处理,包括旋转90度的操作。下面是一个简单的示例:
```python
from PIL import Image
def rotate_90_batch(file_list):
rotated_images = []
for file in file_list:
with Image.open(file) as im:
# 图像以顺时针旋转90度
rotated = im.rotate(90)
# 保存旋转后的图片,这里假设文件名不变,实际应用中可能需要修改
rotated.save(f"rotated_{file}")
rotated_images.append(rotated)
return rotated_images
# 使用方法
image_files = ['image1.jpg', 'image2.png', 'image3.gif'] # 替换为你要旋转的实际文件路径
rotated_list = rotate_90_batch(image_files)
```
这个函数会读取指定目录下的所有图像文件,对每一幅图像旋转90度,并将结果保存下来。`rotate_90`函数会返回旋转后的Image对象,如果需要批量操作并保持原图,可以将每个旋转后的对象添加到列表中。
相关问题
python tk界面使用 opencv 对任意文件夹内图像做批处理,并将它们显示到界面上
可以使用 Python 的 Tkinter 模块和 OpenCV 库来实现这个功能。下面是一个简单的示例代码:
```python
import tkinter as tk
import cv2
import os
class ImageBatchProcessingApp(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.select_dir_btn = tk.Button(self, text="Select Directory", command=self.select_dir)
self.select_dir_btn.pack()
self.process_btn = tk.Button(self, text="Process Images", command=self.process_images)
self.process_btn.pack()
self.quit_btn = tk.Button(self, text="Quit", command=self.master.destroy)
self.quit_btn.pack()
self.image_listbox = tk.Listbox(self)
self.image_listbox.pack()
def select_dir(self):
self.dir_path = tk.filedialog.askdirectory()
self.image_listbox.delete(0, tk.END)
for filename in os.listdir(self.dir_path):
if filename.endswith(".jpg") or filename.endswith(".png"):
self.image_listbox.insert(tk.END, filename)
def process_images(self):
for filename in self.image_listbox.get(0, tk.END):
image_path = os.path.join(self.dir_path, filename)
img = cv2.imread(image_path)
# 在这里做批处理
# ...
# 显示图片到界面上
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = Image.fromarray(img)
img = ImageTk.PhotoImage(img)
self.image_listbox.itemconfig(self.image_listbox.get(0, tk.END).index(filename), image=img)
root = tk.Tk()
app = ImageBatchProcessingApp(master=root)
app.mainloop()
```
在这个示例代码中,我们创建了一个名为 `ImageBatchProcessingApp` 的 Tkinter 应用程序,该应用程序包含三个按钮和一个列表框。单击 `Select Directory` 按钮可以选择要批处理的图像所在的文件夹,并将文件夹中的所有图像文件名显示在列表框中。单击 `Process Images` 按钮可以对列表框中选定的所有图像进行批处理,并将处理后的图像显示在列表框中的对应项中。
要实现批处理功能,你需要在 `process_images` 方法中添加你的代码。例如,你可以使用 OpenCV 来对图像进行缩放、裁剪、旋转、滤波等操作。在将处理后的图像显示到界面上时,我们需要将 OpenCV 的 BGR 格式转换为 RGB 格式,并使用 PIL 和 Tkinter 提供的 `Image` 和 `ImageTk` 类将其转换为可显示的图像。
阅读全文