fix: executor scene/object trace time range for GDINO
This commit is contained in:
@@ -39,7 +39,8 @@ def find_trace_in_frame_range(start_frame, end_frame, file_uuid):
|
|||||||
conn = psycopg2.connect("postgresql://accusys@localhost:5432/momentry")
|
conn = psycopg2.connect("postgresql://accusys@localhost:5432/momentry")
|
||||||
cur = conn.cursor()
|
cur = conn.cursor()
|
||||||
cur.execute("""
|
cur.execute("""
|
||||||
SELECT trace_id, COUNT(*) as faces
|
SELECT trace_id, COUNT(*) as faces,
|
||||||
|
MIN(frame_number) as start_f, MAX(frame_number) as end_f
|
||||||
FROM dev.face_detections
|
FROM dev.face_detections
|
||||||
WHERE file_uuid = %s AND trace_id IS NOT NULL
|
WHERE file_uuid = %s AND trace_id IS NOT NULL
|
||||||
AND frame_number BETWEEN %s AND %s
|
AND frame_number BETWEEN %s AND %s
|
||||||
@@ -49,7 +50,9 @@ def find_trace_in_frame_range(start_frame, end_frame, file_uuid):
|
|||||||
row = cur.fetchone()
|
row = cur.fetchone()
|
||||||
cur.close()
|
cur.close()
|
||||||
conn.close()
|
conn.close()
|
||||||
return row[0] if row else None
|
if row:
|
||||||
|
return {"trace_id": row[0], "faces": row[1], "start_frame": row[2], "end_frame": row[3]}
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def find_trace_by_object(object_name, file_uuid):
|
def find_trace_by_object(object_name, file_uuid):
|
||||||
@@ -126,14 +129,10 @@ def execute(query, file_uuid):
|
|||||||
elif qtype == "scene":
|
elif qtype == "scene":
|
||||||
start = query.get("cut_start", 0)
|
start = query.get("cut_start", 0)
|
||||||
end = query.get("cut_end", 1000000)
|
end = query.get("cut_end", 1000000)
|
||||||
trace_id = find_trace_in_frame_range(start, end, file_uuid)
|
trace_info = find_trace_in_frame_range(start, end, file_uuid)
|
||||||
if trace_id:
|
|
||||||
trace_info = {"trace_id": trace_id}
|
|
||||||
elif qtype == "object":
|
elif qtype == "object":
|
||||||
obj = query.get("expected_object", "")
|
obj_name = query.get("expected_object", "")
|
||||||
trace_id = find_trace_by_object(obj, file_uuid)
|
trace_info = find_trace_by_object(obj_name, file_uuid)
|
||||||
if trace_id:
|
|
||||||
trace_info = {"trace_id": trace_id}
|
|
||||||
|
|
||||||
if trace_info is None:
|
if trace_info is None:
|
||||||
print(" ❌ no trace found")
|
print(" ❌ no trace found")
|
||||||
|
|||||||
Reference in New Issue
Block a user