chore(docs): document ScoreExtractor tiling and refactor debug scripts (#563)
This commit is contained in:
80
scripts/debug/patch_tracker.py
Normal file
80
scripts/debug/patch_tracker.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import sys
|
||||
|
||||
with open('youtube_tab_to_pdf.py', 'r', encoding='utf-8') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
skip = False
|
||||
|
||||
import_added = False
|
||||
|
||||
for line in lines:
|
||||
if line.startswith('import cv2') and not import_added:
|
||||
new_lines.append(line)
|
||||
new_lines.append('from video_cv_tracker import TemporalTracker\n')
|
||||
import_added = True
|
||||
continue
|
||||
|
||||
if line.startswith('def extract_unique_scroll(frames:'):
|
||||
skip = True
|
||||
new_lines.append('''def extract_unique_scroll(frames: List[np.ndarray], threshold: float = SIMILARITY_THRESHOLD) -> List[np.ndarray]:
|
||||
print(f"[4/5] 스크롤형 Tab 시계열 추적 추출 중...")
|
||||
|
||||
strip_tops, strip_bottoms = [], []
|
||||
for frame in frames[:50]:
|
||||
strip = _find_white_tab_strip(frame)
|
||||
if strip:
|
||||
strip_tops.append(strip[0])
|
||||
strip_bottoms.append(strip[1])
|
||||
|
||||
if not strip_tops:
|
||||
return []
|
||||
|
||||
median_top = int(np.median(strip_tops))
|
||||
median_bottom = int(np.median(strip_bottoms))
|
||||
|
||||
tracker = TemporalTracker()
|
||||
|
||||
for frame in frames:
|
||||
h = frame.shape[0]
|
||||
tab_crop = frame[max(0, median_top):min(h, median_bottom), :]
|
||||
if not _has_tab_content(tab_crop):
|
||||
continue
|
||||
tracker.process_frame(tab_crop)
|
||||
|
||||
panorama = tracker.get_final_panorama()
|
||||
if panorama is None:
|
||||
return []
|
||||
|
||||
print(f" -> 생성된 파노라마 길이: {panorama.shape[1]}px")
|
||||
|
||||
chunk_width = 1280
|
||||
final_chunks = []
|
||||
|
||||
w = panorama.shape[1]
|
||||
start_x = 0
|
||||
|
||||
while start_x < w:
|
||||
chunk = panorama[:, start_x:min(w, start_x + chunk_width)]
|
||||
if chunk.shape[1] < chunk_width:
|
||||
pad = np.full((chunk.shape[0], chunk_width - chunk.shape[1], 3), 255, dtype=np.uint8)
|
||||
chunk = np.hstack([chunk, pad])
|
||||
final_chunks.append(chunk)
|
||||
start_x += chunk_width
|
||||
|
||||
print(f" -> A4 분할 컷: {len(final_chunks)}개")
|
||||
return final_chunks
|
||||
|
||||
''')
|
||||
continue
|
||||
|
||||
if skip and line.startswith('def extract_unique_overlay('):
|
||||
skip = False
|
||||
|
||||
if not skip:
|
||||
new_lines.append(line)
|
||||
|
||||
with open('youtube_tab_to_pdf.py', 'w', encoding='utf-8') as f:
|
||||
f.writelines(new_lines)
|
||||
|
||||
print("Patched youtube_tab_to_pdf.py successfully.")
|
||||
Reference in New Issue
Block a user