天天看點

(rect坐标轉換)rect矩形框的坐标形式轉換,以及坐标形式到bbox(bounding box)邊界框的轉換常見的坐标框轉換: 預定義:框坐标表示中  (x,y)為中心點坐标,(x1,y1)為左上角坐标,(x2,y2)為右下角坐标,w和h分别是寬和高,使用圖像坐标系(x軸正方向向下,y軸正方向向右) rect矩形框形式:Cxy坐标形式:bbox邊界框形式:一般方法:說明:

常見的坐标框轉換: 

cxy_wh_2_bbox,cxy_wh_2_rect, rect_2_cxy_wh

預定義:

框坐标表示中  (x,y)為中心點坐标,(x1,y1)為左上角坐标,(x2,y2)為右下角坐标,w和h分别是寬和高,使用圖像坐标系(x軸正方向向下,y軸正方向向右)

rect矩形框形式:

(rect坐标轉換)rect矩形框的坐标形式轉換,以及坐标形式到bbox(bounding box)邊界框的轉換常見的坐标框轉換: 預定義:框坐标表示中  (x,y)為中心點坐标,(x1,y1)為左上角坐标,(x2,y2)為右下角坐标,w和h分别是寬和高,使用圖像坐标系(x軸正方向向下,y軸正方向向右) rect矩形框形式:Cxy坐标形式:bbox邊界框形式:一般方法:說明:

Cxy坐标形式:

(rect坐标轉換)rect矩形框的坐标形式轉換,以及坐标形式到bbox(bounding box)邊界框的轉換常見的坐标框轉換: 預定義:框坐标表示中  (x,y)為中心點坐标,(x1,y1)為左上角坐标,(x2,y2)為右下角坐标,w和h分别是寬和高,使用圖像坐标系(x軸正方向向下,y軸正方向向右) rect矩形框形式:Cxy坐标形式:bbox邊界框形式:一般方法:說明:

bbox邊界框形式:

(rect坐标轉換)rect矩形框的坐标形式轉換,以及坐标形式到bbox(bounding box)邊界框的轉換常見的坐标框轉換: 預定義:框坐标表示中  (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 邊界框大小      

在計算IoU時,一般就是轉換成bbox的(x1,y1,x2,y2) 形式計算的

注意:

        一般在轉換成邊界框bbox時,函數cxy_wh_2_bbox(pos,sz)中的sz是 windos_sz(具體情況具體分析)

說明:

        筆者僅做學習筆記使用,若有錯誤,歡迎指正!