79 lines
2.1 KiB
Python
79 lines
2.1 KiB
Python
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)
|