(rect坐标转换)rect矩形框的坐标形式转换,以及坐标形式到bbox(bounding box)边界框的转换

常见的坐标框转换: 

cxy_wh_2_bbox,cxy_wh_2_rect, rect_2_cxy_wh

预定义:

框坐标表示中  (x,y)为中心点坐标,(x1,y1)为左上角坐标,(x2,y2)为右下角坐标,w和h分别是宽和高,使用图像坐标系(x轴正方向向下,y轴正方向向右)



rect矩形框形式:

Cxy坐标形式:

bbox边界框形式:

一般方法:

def rect1_2_cxy_wh(rect):    #将矩形框表示形式转换成坐标形式   输入rect为(x1,y1,w,h)
    return np.array([rect[0]+rect[2]/2-1, rect[1]+rect[3]/2-1]), np.array([rect[2], rect[3]])    

# return ((x,y),(w,h))  此处(x,y)为中心坐标

def cxy_wh_2_rect1(pos, sz):  #将坐标转换成矩形框的表示形式  输入pos,sz = ((x,y),(w,h))
    return np.array([pos[0]-sz[0]/2+1, pos[1]-sz[1]/2+1, sz[0], sz[1]]) 

# return (x1,y1,w,h)  此处(x1,y1)为左上角坐标

def cxy_wh_2_bbox(cxy, wh):  #将坐标转换成边界框     输入cxy,wh = ((x,y),(w,h))
    return np.array([cxy[0]-wh[0]/2, cxy[1]-wh[1]/2, cxy[0]+wh[0]/2, cxy[1]+wh[1]/2]) 

# return (x1,y1,x2,y2)  此处(x1,y1)为左上角坐标,此处(x2,y2)为右下角坐标

 上面的类似 pos[0]-sz[0]/2+1的+1  -1 操作应该是取整操作,个人觉得可用//代替

对应使用的场景有: 

target_pos, target_sz = rect1_2_cxy_wh(init_rect)  #init_rect初始矩形框
bbox = cxy_wh_2_bbox(target_pos, window_sz)  #Window_sz 边界框大小
res = [cxy_wh_2_rect1(target_pos, target_sz)]  #target_sz 矩形框大小

在计算IoU时,一般就是转换成bbox的(x1,y1,x2,y2) 形式计算的

注意:

        一般在转换成边界框bbox时,函数cxy_wh_2_bbox(pos,sz)中的sz是 windos_sz(具体情况具体分析)


说明:

        笔者仅做学习笔记使用,若有错误,欢迎指正!

  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值