栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

常见的坐标框转换: 

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(具体情况具体分析)


说明:

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580392.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号