57ff6bf4 by 周伟奇

add left

1 parent 43758c7e
......@@ -110,37 +110,51 @@ class Retriever:
if self.find_keys_list[key_idx] is None:
return
_, _, find_key_str, suffix_key, key_x0, key_y0, key_x1, key_y1 = self.find_keys_list[key_idx]
_, _, find_key_str, suffix_key, key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, \
key_x3_src, key_y3_src = self.find_keys_list[key_idx]
for scope_key_idx in scope_tuple[:-1]:
if self.find_keys_list[scope_key_idx] is None:
continue
key_scope = self.find_keys_list[scope_key_idx][6] # left x1
key_scope_tuple = (
self.find_keys_list[scope_key_idx][6], self.find_keys_list[scope_key_idx][7]) # left x1, y1
break
else:
key_scope = None
key_scope_tuple = None
if isinstance(if_startswith, str):
if isinstance(suffix_key, str):
# TODO suffix_key校验与修正
# TODO 目前只考虑了split的情况
return suffix_key, key_x0, key_y0, key_x1, key_y1, ()
# if isinstance(if_startswith, str):
# if isinstance(suffix_key, str):
# # TODO suffix_key校验与修正
# # TODO 目前只考虑了split的情况
# if isinstance(length, int):
# if -3 < length - len(suffix_key) < 3:
# return suffix_key, (
# key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, key_x3_src,
# key_y3_src), ()
# else:
# return suffix_key, (
# key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, key_x3_src,
# key_y3_src), ()
# 坐标系转换
cos, sin = self.get_theta(key_x0_src, key_y0_src, key_x1_src, key_y1_src)
key_x0, key_y0, key_x1, key_y1, key_x2, key_y2, key_x3, key_y3 = self.rebuild_coord(
(key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, key_x3_src, key_y3_src), cos,
sin)
height = key_y1 - key_y0
height = key_y2 - key_y0
y_min = key_y0 - (top_or_left * height)
y_max = key_y1 + (bottom_or_right * height)
y_max = key_y2 + (bottom_or_right * height)
width = key_x1 - key_x0
width = key_x2 - key_x0
x_max = key_x0 - (offset * width)
x_min = x_max - (width * scope_tuple[-1]) if key_scope is None else key_scope
x_min = x_max - (width * scope_tuple[-1]) if key_scope_tuple is None else \
self.rebuild_xy(*key_scope_tuple, cos, sin)[0]
all_find_value_list = []
for go_key_idx, ((x0, y0, _, _, x1, y1, _, _), text) in go_res.items():
cent_x = x0 + ((x1 - x0) / 2)
cent_y = y0 + ((y1 - y0) / 2)
for go_key_idx, ((x0, y0, x1, y1, x2, y3, x3, y3), text) in go_res.items():
cent_x, cent_y = self.rebuild_xy(x0 + ((x2 - x0) / 2), y0 + ((y2 - y0) / 2), cos, sin)
# if go_key_idx == '98' and key_idx == 34:
# print(key_scope)
# print('-------------')
# print(cent_x)
# print(cent_y)
# print('-----------')
......@@ -153,15 +167,15 @@ class Retriever:
# print(x_max)
# print(y_min)
# print(y_max)
# print('===============')
if x_min < cent_x < x_max and y_min < cent_y < y_max:
all_find_value_list.append((text, x0, y0, x1, y1, (go_key_idx, )))
all_find_value_list.append((text, x0, y0, x1, y1, x2, y2, x3, y3, (go_key_idx,)))
if len(all_find_value_list) == 0:
return
elif len(all_find_value_list) == 1:
return all_find_value_list[0]
else:
# TODO choice时的坐标转换?
choice_value = getattr(self, 'choice_{0}'.format(choice_method))(all_find_value_list, length)
return choice_value
......@@ -176,7 +190,8 @@ class Retriever:
if self.find_keys_list[key_idx] is None:
return
_, _, find_key_str, suffix_key, key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, key_x3_src, key_y3_src = self.find_keys_list[key_idx]
_, _, find_key_str, suffix_key, key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, \
key_x3_src, key_y3_src = self.find_keys_list[key_idx]
for scope_key_idx in scope_tuple[:-1]:
if self.find_keys_list[scope_key_idx] is None:
......@@ -197,8 +212,9 @@ class Retriever:
return suffix_key, (key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, key_x3_src, key_y3_src), ()
# 坐标系转换
cos, sin = self.get_theta(x0, y0, x1, y1)
key_x0, key_y0, key_x1, key_y1, key_x2, key_y2, key_x3, key_y3 = self.rebuild_coord((key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, key_x3_src, key_y3_src), cos, sin)
cos, sin = self.get_theta(key_x0_src, key_y0_src, key_x1_src, key_y1_src)
key_x0, key_y0, key_x1, key_y1, key_x2, key_y2, key_x3, key_y3 = self.rebuild_coord(
(key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, key_x3_src, key_y3_src), cos, sin)
height = key_y2 - key_y0
y_min = key_y0 - (top_or_left * height)
......@@ -206,7 +222,8 @@ class Retriever:
width = key_x2 - key_x0
x_min = key_x2 + (offset * width)
x_max = x_min + (width * scope_tuple[-1]) if key_scope_tuple is None else self.rebuild_xy(*key_scope_tuple, cos, sin)[0]
x_max = x_min + (width * scope_tuple[-1]) if key_scope_tuple is None else self.rebuild_xy(
*key_scope_tuple, cos, sin)[0]
all_find_value_list = []
for go_key_idx, ((x0, y0, x1, y1, x2, y3, x3, y3), text) in go_res.items():
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!