Added bubble split
This commit is contained in:
56
regenerate_debug.py
Normal file
56
regenerate_debug.py
Normal file
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Regenerate debug_clusters.png with the new split bubbles.json
|
||||
"""
|
||||
|
||||
import json
|
||||
import cv2
|
||||
import numpy as np
|
||||
|
||||
def quad_bbox(quad):
|
||||
"""Convert quad to bounding box"""
|
||||
xs = [p[0] for p in quad]
|
||||
ys = [p[1] for p in quad]
|
||||
return (min(xs), min(ys), max(xs), max(ys))
|
||||
|
||||
def save_debug_clusters_from_json(
|
||||
image_path="004.png",
|
||||
bubbles_path="bubbles.json",
|
||||
out_path="debug_clusters.png"
|
||||
):
|
||||
img = cv2.imread(image_path)
|
||||
if img is None:
|
||||
print(f"❌ Cannot load image: {image_path}")
|
||||
return
|
||||
|
||||
# Load bubbles.json
|
||||
with open(bubbles_path, "r", encoding="utf-8") as f:
|
||||
bubbles_data = json.load(f)
|
||||
|
||||
# Draw all quad polygons in white (erasing original text)
|
||||
for bid_str, bubble_info in bubbles_data.items():
|
||||
for quad in bubble_info.get("quads", []):
|
||||
pts = np.array(quad, dtype=np.int32)
|
||||
cv2.fillPoly(img, [pts], (255, 255, 255))
|
||||
cv2.polylines(img, [pts], True, (180, 180, 180), 1)
|
||||
|
||||
# Draw bounding boxes with labels
|
||||
for bid_str, bubble_info in bubbles_data.items():
|
||||
bid = int(bid_str)
|
||||
x = bubble_info["x"]
|
||||
y = bubble_info["y"]
|
||||
w = bubble_info["w"]
|
||||
h = bubble_info["h"]
|
||||
x2 = x + w
|
||||
y2 = y + h
|
||||
|
||||
cv2.rectangle(img, (x, y), (x2, y2), (0, 220, 0), 2)
|
||||
cv2.putText(img, f"BOX#{bid}", (x + 2, max(15, y + 16)),
|
||||
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 220, 0), 2)
|
||||
|
||||
cv2.imwrite(out_path, img)
|
||||
print(f"✅ Saved: {out_path}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
save_debug_clusters_from_json()
|
||||
Reference in New Issue
Block a user