|
@@ -1533,48 +1533,55 @@ def fix_inner(row_lines, col_lines, points, split_y):
|
|
|
|
|
|
return new_points
|
|
return new_points
|
|
|
|
|
|
- new_points = []
|
|
|
|
- for i in range(1, len(split_y)):
|
|
|
|
- last_y = split_y[i-1]
|
|
|
|
- y = split_y[i]
|
|
|
|
|
|
+ row_lines_copy = copy.deepcopy(row_lines)
|
|
|
|
+ col_lines_copy = copy.deepcopy(col_lines)
|
|
|
|
|
|
- # 先对点线进行分区
|
|
|
|
- split_row_lines = []
|
|
|
|
- split_col_lines = []
|
|
|
|
- split_points = []
|
|
|
|
- for row in row_lines:
|
|
|
|
- if last_y <= row[1] <= y:
|
|
|
|
- split_row_lines.append(row)
|
|
|
|
- for col in col_lines:
|
|
|
|
- if last_y <= col[1] <= y:
|
|
|
|
- split_col_lines.append(col)
|
|
|
|
- for point in points:
|
|
|
|
- if last_y <= point[1] <= y:
|
|
|
|
- split_points.append(point)
|
|
|
|
-
|
|
|
|
- new_point_list = fix(split_col_lines, split_row_lines, split_points, axis=1)
|
|
|
|
- for line, new_point in new_point_list:
|
|
|
|
- if line in col_lines:
|
|
|
|
- index = col_lines.index(line)
|
|
|
|
- point1 = line[:2]
|
|
|
|
- point2 = line[2:]
|
|
|
|
- if new_point[1] >= point2[1]:
|
|
|
|
- col_lines[index] = [point1[0], point1[1], new_point[0], new_point[1]]
|
|
|
|
- elif new_point[1] <= point1[1]:
|
|
|
|
- col_lines[index] = [new_point[0], new_point[1], point2[0], point2[1]]
|
|
|
|
-
|
|
|
|
- new_point_list = fix(split_row_lines, split_col_lines, split_points, axis=0)
|
|
|
|
- for line, new_point in new_point_list:
|
|
|
|
- if line in row_lines:
|
|
|
|
- index = row_lines.index(line)
|
|
|
|
- point1 = line[:2]
|
|
|
|
- point2 = line[2:]
|
|
|
|
- if new_point[0] >= point2[0]:
|
|
|
|
- row_lines[index] = [point1[0], point1[1], new_point[0], new_point[1]]
|
|
|
|
- elif new_point[0] <= point1[0]:
|
|
|
|
- row_lines[index] = [new_point[0], new_point[1], point2[0], point2[1]]
|
|
|
|
-
|
|
|
|
- return row_lines, col_lines
|
|
|
|
|
|
+ try:
|
|
|
|
+ new_points = []
|
|
|
|
+ for i in range(1, len(split_y)):
|
|
|
|
+ last_y = split_y[i-1]
|
|
|
|
+ y = split_y[i]
|
|
|
|
+
|
|
|
|
+ # 先对点线进行分区
|
|
|
|
+ split_row_lines = []
|
|
|
|
+ split_col_lines = []
|
|
|
|
+ split_points = []
|
|
|
|
+ for row in row_lines:
|
|
|
|
+ if last_y <= row[1] <= y:
|
|
|
|
+ split_row_lines.append(row)
|
|
|
|
+ for col in col_lines:
|
|
|
|
+ if last_y <= col[1] <= y:
|
|
|
|
+ split_col_lines.append(col)
|
|
|
|
+ for point in points:
|
|
|
|
+ if last_y <= point[1] <= y:
|
|
|
|
+ split_points.append(point)
|
|
|
|
+
|
|
|
|
+ new_point_list = fix(split_col_lines, split_row_lines, split_points, axis=1)
|
|
|
|
+ for line, new_point in new_point_list:
|
|
|
|
+ if line in col_lines:
|
|
|
|
+ index = col_lines.index(line)
|
|
|
|
+ point1 = line[:2]
|
|
|
|
+ point2 = line[2:]
|
|
|
|
+ if new_point[1] >= point2[1]:
|
|
|
|
+ col_lines[index] = [point1[0], point1[1], new_point[0], new_point[1]]
|
|
|
|
+ elif new_point[1] <= point1[1]:
|
|
|
|
+ col_lines[index] = [new_point[0], new_point[1], point2[0], point2[1]]
|
|
|
|
+
|
|
|
|
+ new_point_list = fix(split_row_lines, split_col_lines, split_points, axis=0)
|
|
|
|
+ for line, new_point in new_point_list:
|
|
|
|
+ if line in row_lines:
|
|
|
|
+ index = row_lines.index(line)
|
|
|
|
+ point1 = line[:2]
|
|
|
|
+ point2 = line[2:]
|
|
|
|
+ if new_point[0] >= point2[0]:
|
|
|
|
+ row_lines[index] = [point1[0], point1[1], new_point[0], new_point[1]]
|
|
|
|
+ elif new_point[0] <= point1[0]:
|
|
|
|
+ row_lines[index] = [new_point[0], new_point[1], point2[0], point2[1]]
|
|
|
|
+
|
|
|
|
+ return row_lines, col_lines
|
|
|
|
+ except:
|
|
|
|
+ traceback.print_exc()
|
|
|
|
+ return row_lines_copy, col_lines_copy
|
|
|
|
|
|
|
|
|
|
def fix_corner(row_lines, col_lines, split_y, threshold=0):
|
|
def fix_corner(row_lines, col_lines, split_y, threshold=0):
|