在 python 中裁剪图像

Cropping an image in python

我正在使用 Azure Custom Vision 进行对象检测项目。我得到的边界框的一个例子是 [0.053913698, 0.6198375, 0.09218301, 0.13308609].

所选答案 here 不适合我的任务,因为所有值都小于 0。

有人可以帮忙吗?

原因

边界框列表告诉您 ["left", "top", "width", "height"],并且每个边界框都是 图像原始大小的百分比 .

解决方案

假设您的图片尺寸为 800 x 600(即图片宽度为 800,图片高度为 600)。因此,您需要做的是将宽度和高度乘以相应的值。阅读下面 Python 中的代码:

imageWidth  = 800
imageHeight = 600
bbx = {
    "left": 0.053913698,
    "top": 0.6198375,
    "width": 0.09218301,
    "height": 0.13308609
}

# top-left point position
(x, y) = (bbx["left"]*imageWidth, bbx["top"]*imageHeight) 

# bounding box's width and height
bbxWidth  = bbx["width"]  * imageWidth
bbxHeight = bbx["height"] * imageHeight

您可以使用以上值(即 xybbxWidthbbxHeight)在原始图像上绘制边界框。