如何从图像中获取随机边界框? (Python)
Posted
技术标签:
【中文标题】如何从图像中获取随机边界框? (Python)【英文标题】:How to get random bounding boxes from image? (python) 【发布时间】:2016-08-28 12:21:43 【问题描述】:我有一批图像,我使用模式“rb”的打开功能打开每个图像,然后使用读取功能读取每个图像。现在我想从每个图像中获取 50 个随机边界框,并使用 open 和 read 函数再次读取每个边界框。有什么简单的方法吗?
【问题讨论】:
你真正想要实现什么?您的问题令人困惑。 我想从一张图片中随机抽取 50 个部分。这些部分将成为边界框。我应该将它们存储在不同的 .jpg 文件中,然后使用打开和读取功能读取它们吗?还有其他方法吗? 【参考方案1】:这是一个可能的解决方案:
from random import randint
from PIL import Image
def random_bbox(bbox):
v = [randint(0, v) for v in bbox]
left = min(v[0], v[2])
upper = min(v[1], v[3])
right = max(v[0], v[2])
lower = max(v[1], v[3])
return [left, upper, right, lower]
filename = "your_image.png"
im = Image.open(filename)
bbox = im.getbbox()
N = 50
for i in range(N):
random_tile = im.crop(random_bbox(bbox))
#random_tile.show()
如您所见,此解决方案是从一张图像中裁剪随机子图像,如您所见,我已经评论了 random_tile.show()
行,现在取决于您如何处理该 random_tile(保存、调整...)
【讨论】:
谢谢。我已经找到了 tensorflow 的解决方案。我现在正在搜索如何将二进制形式的边界框保存为字符串。【参考方案2】:Sklearn 的 extract_patches_2d 可以满足您的需求。
【讨论】:
以上是关于如何从图像中获取随机边界框? (Python)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用python google colab将带有边界框的图像存储在文件夹中?