将边界框区域转换为蒙版并将其保存为 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
我有一组图像,其边界框值如下所示:
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