如何从图像中获取随机边界框?(python)

如何从图像中获取随机边界框?(python),python,image,bounding-box,Python,Image,Bounding Box,我有一批图像,我使用“rb”模式的打开功能打开每一幅图像,然后使用读取功能读取每一幅图像。现在,我想从每个图像中随机获得50个边界框,并使用open和read函数再次读取每个边界框。有什么简单的方法吗?这里有一个可能的解决方案: 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[

我有一批图像,我使用“rb”模式的打开功能打开每一幅图像,然后使用读取功能读取每一幅图像。现在,我想从每个图像中随机获得50个边界框,并使用open和read函数再次读取每个边界框。有什么简单的方法吗?

这里有一个可能的解决方案:

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\u tile.show()
,现在取决于您如何处理该随机tile(保存、调整等)

这里有一个可能的解决方案:

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\u tile.show()
,现在取决于您如何处理该随机tile(保存、调整,…)

Sklearn's做的正是你想要的。

Sklearn's做的正是你想要的。

你真正想要的是什么?你的问题让人困惑。我想从一张图片中随机抽取50个部分。这些部分将成为边界框。我应该将它们存储在不同的.jpg文件中,然后使用open和read函数读取它们吗?还有别的办法吗?你到底想达到什么目的?你的问题让人困惑。我想从一张图片中随机抽取50个部分。这些部分将成为边界框。我应该将它们存储在不同的.jpg文件中,然后使用open和read函数读取它们吗?还有别的办法吗?谢谢。我已经找到了tensorflow的解决方案。我正在搜索如何将边界框以二进制形式保存为字符串。谢谢。我已经找到了tensorflow的解决方案。我现在正在搜索如何将边界框以二进制形式保存为字符串。