import numpy as np def center_coordinate(boundbxs): ''' 输入:两个对角坐标xyxy 输出:矩形框重点坐标xy ''' boundbxs_x1=boundbxs[0] boundbxs_y1=boundbxs[1] boundbxs_x2=boundbxs[2] boundbxs_y2=boundbxs[3] center_x=0.5*(boundbxs_x1+boundbxs_x2) center_y=0.5*(boundbxs_y1+boundbxs_y2) return center_x,center_y def fourcorner_coordinate(boundbxs): ''' 输入:两个对角坐标xyxy 输出:矩形框四个角点坐标,以contours顺序。 ''' boundbxs_x1=boundbxs[0] boundbxs_y1=boundbxs[1] boundbxs_x2=boundbxs[2] boundbxs_y2=boundbxs[3] wid=boundbxs_x2-boundbxs_x1 hei=boundbxs_y2-boundbxs_y1 boundbxs_x3=boundbxs_x1+wid boundbxs_y3=boundbxs_y1 boundbxs_x4=boundbxs_x1 boundbxs_y4 = boundbxs_y1+hei contours_rec=[[boundbxs_x1,boundbxs_y1],[boundbxs_x3,boundbxs_y3],[boundbxs_x2,boundbxs_y2],[boundbxs_x4,boundbxs_y4]] return contours_rec def remove_simivalue(list1,list2): ''' 将list1中属于list2的元素都删除。 输入:两个嵌套列表 返回:嵌套列表 ''' list33=list1.copy() for i in range(len(list1)): for j in range(len(list2)): if list2[j] == list1[i]: # list33.pop(list1[i]) list33.remove(list1[i]) return list33 def remove_sameeleme_inalist(list3): ''' 将list3中重复嵌套列表元素删除。 输入:嵌套列表 返回:嵌套列表 ''' list3=list3 list4=[] list4.append(list3[0]) for dict in list3: k=0 for item in list4: if dict!=item: k=k+1 else: break if k==len(list4): list4.append(dict) return list4 def order_points(pts): ''' sort rectangle points by clockwise ''' sort_x = pts[np.argsort(pts[:, 0]), :] Left = sort_x[:2, :] Right = sort_x[2:, :] # Left sort Left = Left[np.argsort(Left[:, 1])[::-1], :] # Right sort Right = Right[np.argsort(Right[:, 1]), :] return np.concatenate((Left, Right), axis=0)