Add width_r : local image width in a group
Check consistency of boxes wrt width_rmaster
parent
5b8a37263d
commit
04a1ef447e
|
|
@ -45,7 +45,7 @@ def make_dictionary(root_dir):
|
||||||
try:
|
try:
|
||||||
with open(jf, 'r', encoding='utf-8') as f:
|
with open(jf, 'r', encoding='utf-8') as f:
|
||||||
coord_list = json.load(f)
|
coord_list = json.load(f)
|
||||||
# Format: [["id", x, y], ...]
|
# Format: [["id", x, y, width_r, "label"], ...]
|
||||||
for entry in coord_list:
|
for entry in coord_list:
|
||||||
if entry[0] == student_id:
|
if entry[0] == student_id:
|
||||||
coordinates = (entry[1], entry[2])
|
coordinates = (entry[1], entry[2])
|
||||||
|
|
|
||||||
|
|
@ -250,7 +250,8 @@ def process_single_task(task_tuple):
|
||||||
# List of (groupid, start, end), in pixels
|
# List of (groupid, start, end), in pixels
|
||||||
group_data = json.load(f)
|
group_data = json.load(f)
|
||||||
n = len(group_data)
|
n = len(group_data)
|
||||||
d_data = {l[0]: (l[1], l[2]) for l in group_data}
|
# l[3] is ratio of width to width of group
|
||||||
|
d_data = {l[0]: (l[1], l[2], l[3]) for l in group_data}
|
||||||
total_height = group_data[-1][2]
|
total_height = group_data[-1][2]
|
||||||
use_flash = n >= 4 or total_height <= 500
|
use_flash = n >= 4 or total_height <= 500
|
||||||
if not use_flash and limit is not None:
|
if not use_flash and limit is not None:
|
||||||
|
|
@ -307,9 +308,10 @@ def process_single_task(task_tuple):
|
||||||
if pid not in d_data:
|
if pid not in d_data:
|
||||||
print("Error : Gemini answered a copie id not present", pid, label, group_name)
|
print("Error : Gemini answered a copie id not present", pid, label, group_name)
|
||||||
continue
|
continue
|
||||||
yming,ymaxg = d_data[pid]
|
yming,ymaxg, width_r = d_data[pid]
|
||||||
if ymin < yming-50 or ymax > ymaxg+50:
|
if ymin < yming-50 or ymax > ymaxg+50:
|
||||||
print("Error : Gemini answered box2d not at the right position", pid, label, group_name)
|
print("Error : Gemini answered box2d too low/up",
|
||||||
|
pid, label, group_name)
|
||||||
if ymax < yming or ymin > ymaxg:
|
if ymax < yming or ymin > ymaxg:
|
||||||
print("Removing the box.")
|
print("Removing the box.")
|
||||||
f["box_2d"] = None
|
f["box_2d"] = None
|
||||||
|
|
@ -319,8 +321,16 @@ def process_single_task(task_tuple):
|
||||||
|
|
||||||
f["box_2d"] = [nymin, xmin, nymax, xmax]
|
f["box_2d"] = [nymin, xmin, nymax, xmax]
|
||||||
# print("Group :", yming, ymaxg, "Answered:", ymin, ymax)
|
# print("Group :", yming, ymaxg, "Answered:", ymin, ymax)
|
||||||
|
if xmax / 1000 > width_r:
|
||||||
|
print("Error : Gemini answered box2d too right",
|
||||||
|
pid, label, group_name)
|
||||||
|
if xmin /1000 > width_r:
|
||||||
|
print("Removing the box.")
|
||||||
|
f["box_2d"] = None
|
||||||
|
continue
|
||||||
|
f["box_2d"][3] = int(width_r * 1000)
|
||||||
|
|
||||||
# --- CRITICAL: Use Lock for writing shared data ---
|
# --- Use Lock for writing shared data ---
|
||||||
with io_lock:
|
with io_lock:
|
||||||
if label not in results:
|
if label not in results:
|
||||||
results[label] = [] # Ensure key exists if not using defaultdict
|
results[label] = [] # Ensure key exists if not using defaultdict
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,8 @@ def create_jpg(identifier, group_index, group, root_dir):
|
||||||
# Record Image Coordinates
|
# Record Image Coordinates
|
||||||
h_min = y_offset
|
h_min = y_offset
|
||||||
h_max = y_offset + img.height
|
h_max = y_offset + img.height
|
||||||
metadata.append((dd, h_min, h_max))
|
# identifier should be a label
|
||||||
|
metadata.append((dd, h_min, h_max, img.width/total_width, identifier))
|
||||||
|
|
||||||
# Draw Image
|
# Draw Image
|
||||||
x_pos = 0
|
x_pos = 0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue