【问题标题】:How to autocrop randomly using PIL?如何使用 PIL 随机自动裁剪?
【发布时间】:2019-12-04 21:35:53
【问题描述】:

我正在尝试在 PIL 中编写一个脚本,该脚本基本上可以从一个较大的图像中创建一堆图像。 我想拍一张更大的图像,假设它是 1000X1000 像素,并在“随机”位置裁剪出 250x250 的正方形。

我知道 .crop(box) 存在并且一次处理一张图像和一次裁剪。有什么办法可以用它来完成我想要的任务吗?

【问题讨论】:

  • 你打算用你提取的方块做什么?
  • @MarkSetchell 我将使用正方形作为我的 ML 模型的训练图像
  • 您是否关心边缘在抽样中的代表性是否不足?
  • 我愿意,我也想加入。

标签: python python-imaging-library crop


【解决方案1】:
from PIL import Image
from random import randrange

img = Image.open(r"image_path")  
x, y = img.size

matrix = 250
sample = 10
sample_list = []

for i in range(sample):
    x1 = randrange(0, x - matrix)
    y1 = randrange(0, y - matrix)
    sample_list.append(img.crop((x1, y1, x1 + matrix, y1 + matrix)))

matrix => 用于裁剪的矩阵大小(必须是对称的,并且应该比图像大小小很多)

sample =>必须采集的样本数量(或裁剪图像的数量)

sample_list => 用于存储裁剪图像的列表

  • 代码执行后,sample_list 将包含几个图像对象,这些对象可以通过它们的索引号单独引用(ex. sample_list[0]

【讨论】:

    猜你喜欢
    • 2012-10-01
    • 2012-12-22
    • 2012-04-16
    • 2015-03-16
    • 2018-12-11
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多