【发布时间】:2020-04-22 13:23:05
【问题描述】:
使用下面的代码,我已成功导入图像、定义坐标列表,然后将图像裁剪为这些坐标。但是,我当前的代码有两个问题:
因为坐标是成对的,所以它会裁剪图像,然后裁剪该图像,而不是将两个单独的裁剪保存为新图像,与父图像分开。
当我在代码中定义我的坐标时,它工作正常。但是当我取消注释第一个 boxcrop(第 11 行)以从我的 csv 中获取坐标时,它不起作用。
最终,我希望代码能够导入图像,从 csv 文件中获取所需作物的坐标(可能超过 2 个,最多 8 个!),然后将每个作物保存为新图像,文件名与原始图像相同。例如,flowers.png 将变为flowers_crop1、flowers_crop2 等。任何和所有建议都值得赞赏,我查看了其他帖子并没有看到与保存副本相同的问题,所以我希望我不会重新提出问题。
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)
【问题讨论】:
-
这里有两个问题。如果你把你的问题一分为二,你就有更好的机会找到答案。例如,可以在stackoverflow.com/questions/15589517/… 中找到裁剪图像。然后你需要搜索 cv2.imwrite 或类似的方式将你的图像写入磁盘。
-
@smttsp 谢谢你的建议!另一个用户很快解决了我的复制问题,所以现在 csv 输入是唯一的问题。谢谢!
标签: python python-imaging-library