已知矩形框左上角点坐标及右下角坐标,使用Python 将其转换为yolo格式
时间: 2023-11-22 19:51:59 浏览: 131
数据集标注信息的坐标转换 COCO to yolo
Yolo格式需要将矩形框的坐标转换为归一化坐标,即左上角点和右下角点的坐标值都在[0,1]之间。假设矩形框的左上角坐标为(x1,y1),右下角坐标为(x2,y2),图像宽度为W,图像高度为H,那么可以按照以下方式计算yolo格式的归一化坐标:
```
x_center = (x1 + x2) / 2 / W
y_center = (y1 + y2) / 2 / H
width = (x2 - x1) / W
height = (y2 - y1) / H
```
然后将四个值按照以下格式组合成一个字符串即可:
```
<class> <x_center> <y_center> <width> <height>
```
其中<class>是类别编号(如果只有一个类别则为0)。
下面是一个示例代码:
```python
def rect_to_yolo(x1, y1, x2, y2, img_width, img_height):
x_center = (x1 + x2) / 2 / img_width
y_center = (y1 + y2) / 2 / img_height
width = (x2 - x1) / img_width
height = (y2 - y1) / img_height
return f"0 {x_center} {y_center} {width} {height}"
```
使用示例:
```python
x1, y1, x2, y2 = 100, 200, 300, 400
img_width, img_height = 640, 480
yolo_str = rect_to_yolo(x1, y1, x2, y2, img_width, img_height)
print(yolo_str) # 输出:0 0.375 0.625 0.3125 0.4166666666666667
```
注意:如果矩形框的坐标超出了图像范围,则需要先将其裁剪到图像内部。
阅读全文