将边界框区域转换为蒙版并将其保存为 PNG 文件

Converting Bounding box regions into masks and saving them as PNG files

我有一组图像,其边界框值如下所示:

image_names class   xmin    xmax    ymin    ymax
image1.png  1       260     361     45      184

我希望将这些边界框值转换为具有边界框尺寸并填充白色像素的蒙版,并以“image1_mask.png”格式存储每个图像的蒙版等。我们是否有预定义的函数来执行此操作?

首先创建一个与image1.png大小相同的空白图像:

import cv2
image = cv2.imread('image1.png', -1)
mask = image.copy()
mask[:] = 0

接下来,使用cv2.rectangle 在感兴趣的范围内绘制白色矩形。值得庆幸的是,它采用定义矩形左上角和右下角限制的最小和最大水平和垂直坐标。

num_channels = 1 if len(mask.shape) == 2 else mask.shape[2]
cv2.rectangle(mask, (xmin, ymin), (xmax, ymax), color=(255,) * num_channels)

mask 将在感兴趣区域包含一个白色矩形。请注意,在 cv2.rectangle 调用中,我根据输入图像是灰度还是彩色对此进行了调整,因此您不必担心进行任何颜色到灰度的转换,反之亦然。

简单的方法

import cv2
import numpy as np

img = cv2.imread('image1.png') # read image
mask = np.zeros((img.shape[0],img.shape[1]),dtype=np.uint8) # initialize mask
mask[ymin:ymax,xmin:xmax] = 255 # fill with white pixels
cv2.imwrite('image1_mask.png',mask) # save mask