问题描述
使用yolo的边界框绘制Mask时,解析出了边界框坐上顶点和右下顶点的坐标,但是使用numpy处理时得到了错误的Mask,使用opencv能够得到正确的Mask。
使用numpy时的操作如下:
xmin, ymin, xmax, ymax = xyxy
mask[xmin:xmax, ymin:ymax] = 255
使用opencv时的操作如下:
c1, c2 = (xyxy[0], xyxy[1]), (xyxy[2], xyxy[3])
cv2.rectangle(mask, c1, c2, color=(255))
问题原因
opencv以左上角作为二维直角坐标系的零点,X轴为图像矩形的上面那条水平线;Y轴为图像矩形左边的那条垂直线。
numpy以左上角作为二维直角坐标系的零点,X轴为图像矩形左边的那条垂直线,Y轴为图像矩形的上面那条水平线。
解决办法
使用numpy时的操作改为:
xmin, ymin, xmax, ymax = xyxy
mask[ymin:ymax,xmin:xmax] = 255