[python][原创]关于DOAT数据集中hbb和obb两种标注区别

该代码示例对比了HBB(水平边界框)和OBB(最小外接矩形)在图像处理中包围物体的区别。HBB强调水平方向框住物体,而OBB更注重包围物体本身,减少背景包含。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看了网上没有一个讲解清楚的,于是直接写代码查看2种到底区别在哪,果然还是显示可以明显啊看出区别,代码如下,注意文件都来自DOTA1.5图片和标注:

import cv2
import os
import numpy as np

image_file = r'C:\Users\fut\Desktop\extract\P2750.png'
hbb_file = r'C:\Users\fut\Desktop\extract\P2750_hbb.txt'
obb_file = r'C:\Users\fut\Desktop\extract\P2750_obb.txt'


def load_lines(file):
    with open(file, 'r') as f:
        lines = f.read().rstrip('\n').split('\n')
    return lines[2:]


def draw_image(frame, lines):
    for line in lines:
        data = line.split(' ')
        x1 = int(float(data[0]))
        y1 = int(float(data[1]))
        x2 = int(float(data[2]))
        y2 = int(float(data[3]))
        x3 = int(float(data[4]))
        y3 = int(float(data[5]))
        x4 = int(float(data[6]))
        y4 = int(float(data[7]))
        name = data[8]
        box = np.array([[x1, y1], [x2, y2], [x3, y3], [x4, y4]], np.int32)
        box = box.reshape((-1, 1, 2))
        cv2.polylines(frame, [box], True, (0, 0, 255), 2)
    return frame


hbb_lines = load_lines(hbb_file)
obb_lines = load_lines(obb_file)
hbb_img = draw_image(cv2.imread(image_file), hbb_lines)
obb_img = draw_image(cv2.imread(image_file), obb_lines)
cv2.imshow('hbb', hbb_img)
cv2.imshow('obb', obb_img)
cv2.waitKey(0)

hbb显示结果(图太大值截取部分):

obb显示结果:

 从图里面很容易看出:

obb方式更注重边框尽可能包围物体而不包含其他背景

hbb方式更注重方向,尽可能水平方向框住物体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值