使用cityscapes数据集,我想在行人周围绘制一个边界框,并在其中填充噪声(盐和胡椒粉)。
具有以下注释
"objects": [
{
"instanceId": 24000,
"bbox": [
1580,
277,
150,
366
],
"bboxVis": [
1594,
279,
126,
364
],
"label": "pedestrian"
},
我该如何围绕行人绘制边界框?或最佳做法是什么?
下面是我要实现的目标的示例。
注意:我调整了原始大小(1024x2048)以便查看。
更新:非常欢迎提示或建议!
更新#2 添加了我要实现的示例。所以这里有两件事。首先,绘制矩形边界框,然后2)填充噪声。希望这可以清除一切。
答案 0 :(得分:1)
如果您裁剪区域并从上面的链接中应用盐和胡椒功能,则可以实现图像中的盐和胡椒边界框(我只是对该区域进行了硬编码,但是您可以从标签中读取它) :
盐和胡椒粉功能取自here
import cv2
import numpy as np
import time
def noisy(image):
row, col, ch = image.shape
s_vs_p = 0.5
amount = 0.5
out = image
# Salt mode
num_salt = np.ceil(amount * image.size * s_vs_p)
coords = [np.random.randint(0, i - 1, int(num_salt))
for i in image.shape]
out[coords] = 1
# Pepper mode
num_pepper = np.ceil(amount * image.size * (1. - s_vs_p))
coords = [np.random.randint(0, i - 1, int(num_pepper))
for i in image.shape]
out[coords] = 0
return out
im = cv2.imread('test.jpg', cv2.IMREAD_COLOR)
x = 1580
y = 277
h = 366
w = 150
crop_img = im[y:y+h, x:x+w]
noisy(crop_img)
cv2.rectangle(im, (x,y), (x+w, y+h), (0,0,0), 2) #change (0,0,0) to whatever color you want
cv2.imwrite('exp.jpg', im)
答案 1 :(得分:0)
您要问吗?
A。如何找到边界框的坐标?
或
B。您在问如何使用python在图像中绘制矩形吗?
A。对于每个行人,获取每个轴的最高和最低像素值(x_min,x_max,y_min,y_max),然后将用作边界框的边界值。
B。您可以使用openCV:
import cv2
image = cv2.imread('the path to your image')
cv2.rectangle(image,(x_min,y_min),(x_max,y_max),(0,255,0),2) # add rectangle to image