python 批量截取图片 并保存原图片名

前言

最近需要对图片进行批量截取处理,所以写下来作为笔记

代码

(1)对每张图片都需要点选然后截图

import matplotlib.pyplot as plt
import  os
from PIL import Image
path = "./"
filelist = os.listdir(path)      # 列举当前文件夹所有文件
for pictureName in filelist:
    if pictureName[-3:] != "png":
        continue                  #图片都是png格式,如果不是 跳过
    newPath = path + "\\" + pictureName
    im = Image.open(newPath)
    plt.imshow(im, cmap = plt.get_cmap("gray"))
    pos = plt.ginput(2)      #  点选像素坐标 截取图片
    cropped = im.crop((pos[0][0], pos[0][1], pos[1][0], pos[1][1]))
    cropped.save("./"+ pictureName )  #以原文件名保存到新的文件夹

(2)先手选一个截图范围 然后批量对所有图执行相同操作

import matplotlib.pyplot as plt
from PIL import Image
im = Image.open("??")
plt.imshow(im, cmap = plt.get_cmap("gray"))
pos=plt.ginput(2) 
print(pos)
cropped = im.crop((pos[0][0], pos[0][1], pos[1][0], pos[1][1]))  # (left, upper, right, lower)
cropped.save("./??")

完整代码:

import  os
import matplotlib.pyplot as plt
from PIL import Image
im = Image.open("/1.png")
plt.imshow(im, cmap = plt.get_cmap("gray"))
pos=plt.ginput(2) 
print(pos)

path = "./"
filelist = os.listdir(path)      # 列举当前文件夹所有文件
for pictureName in filelist:
    if pictureName[-3:] != "png":
        continue                  #图片都是png格式,如果不是 跳过
    newPath = path + "\\" + pictureName
    im = Image.open(newPath)
    cropped = im.crop((pos[0][0], pos[0][1], pos[1][0], pos[1][1]))  # (left, upper, right, lower)
    cropped.save("./"+ pictureName )  #以原文件名保存到新的文件夹

(3)我就比较倒霉了 matlab的plotlib的老问题,前后端不能交互

那就手动指定位置呗 可以参考报错之后仍然会显示的灰度图 有一个所谓的坐标 自己设置 pos

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
批量截取指定区域并保存图片,您可以使用OpenCV库来完成。以下是一个示例代码,演示了如何从多个图像中截取指定区域并保存。 ```python import cv2 import os # 定义要截取的区域坐标 x = 100 # 左上角 x 坐标 y = 100 # 左上角 y 坐标 width = 200 # 区域宽度 height = 200 # 区域高度 # 定义输入图像文件夹路径和输出图像文件夹路径 input_folder = 'path/to/input/folder' output_folder = 'path/to/output/folder' # 获取输入文件夹中的所有图像文件列表 image_files = [f for f in os.listdir(input_folder) if os.path.isfile(os.path.join(input_folder, f))] # 遍历每个图像文件 for image_file in image_files: # 读取图像 image_path = os.path.join(input_folder, image_file) image = cv2.imread(image_path) # 截取指定区域 roi = image[y:y+height, x:x+width] # 构造输出文件路径 output_file = os.path.splitext(image_file)[0] + '_cropped.jpg' output_path = os.path.join(output_folder, output_file) # 保存截取后的图像 cv2.imwrite(output_path, roi) print(f"已保存截取后的图像: {output_file}") print("批量截取保存完成") ``` 请确保将代码中的 `'path/to/input/folder'` 替换为实际的输入图像文件夹路径,将 `'path/to/output/folder'` 替换为实际的输出图像文件夹路径。代码将遍历输入文件夹中的所有图像文件,读取每个图像并截取指定区域,然后将截取后的图像保存到输出文件夹中。最后,将会打印出已保存截取后的图像文件名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值