使用下面的代码,我已经成功导入了图像,定义了坐标列表,然后将图像裁剪为这些坐标。但是,我当前的代码有两个问题:
因为坐标是成对的,所以它正在裁剪图像,然后裁剪该图像,而不是与父图像分开保存两个单独的作物作为新图像。
当我在代码中定义坐标时,它可以正常工作。但是,当我取消注释第一个boxcrop(第11行)以从csv获取坐标时,它不起作用。
最终,我希望代码能够导入图像,从csv文件中获取所需作物的坐标(最多2个,最多8个!),然后将每个作物保存为新图像,文件名与原始图像相同。例如,flowers.png将变为flowers_crop1,flowers_crop2等。感谢所有建议,我查看了其他帖子,但没有看到保存副本的同一问题,因此希望我不要提出任何问题。< / p>
from PIL import Image
import numpy as np
import pandas as pd
#Open image
im = Image.open(r'C:/Users/Testing/Capture.png')
#Open excel file
df = pd.read_csv(r'C:/Users/Testing/crops.csv', header=0)
#Get coordinates of box
#boxcrop = df.values.T[2].tolist()
boxcrop = ['(212,233,226,247)','(196,217,210,231)']
for i in boxcrop:
left, upper, right, lower = np.array([i.replace('(', '').replace(')','').split(',')], dtype=int).T
dims = np.concatenate([left, upper, right, lower])
im_crop = im.crop((dims))
im_crop.save(r'C:\Users\Testing\crops\cropped.png', quality=95)
答案 0 :(得分:2)
使用:
im_crop = im.copy().crop((dims))
裁剪副本。
使用f字符串保存文件名:
im_crop.save(f'blahblah{i}.png')