chore(docs): document ScoreExtractor tiling and refactor debug scripts (#563)
This commit is contained in:
33
scripts/debug/test_number_band.py
Normal file
33
scripts/debug/test_number_band.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import cv2
|
||||
import numpy as np
|
||||
from youtube_tab_to_pdf import extract_unique_scroll
|
||||
|
||||
# We will read fast_test_pano.jpg
|
||||
img = cv2.imread('fast_test_pano.jpg', cv2.IMREAD_GRAYSCALE)
|
||||
|
||||
# We want to find staff lines and number band
|
||||
_, bin_inv = cv2.threshold(img, 200, 255, cv2.THRESH_BINARY_INV)
|
||||
row_sums = np.sum(bin_inv, axis=1) / 255.0
|
||||
staff_rows = np.where(row_sums > img.shape[1] * 0.4)[0]
|
||||
|
||||
if len(staff_rows) >= 6:
|
||||
staff_y_top = staff_rows[0]
|
||||
else:
|
||||
staff_y_top = int(img.shape[0] * 0.3)
|
||||
|
||||
# Number band
|
||||
band_y_top = max(0, staff_y_top - 25)
|
||||
band_y_bottom = staff_y_top
|
||||
|
||||
band = img[band_y_top:band_y_bottom, :]
|
||||
|
||||
# Save it to see if it correctly contains the numbers
|
||||
cv2.imwrite('debug_band.png', band)
|
||||
print(f"Band shape: {band.shape}")
|
||||
|
||||
# Let's see if we can extract number boxes!
|
||||
band_inv = cv2.bitwise_not(band)
|
||||
col_sums = np.sum(band_inv, axis=0) / 255.0
|
||||
number_xs = np.where(col_sums > 5)[0] # at least 5 pixels of ink vertically
|
||||
|
||||
print(f"Pixels with numbers: {len(number_xs)}")
|
||||
Reference in New Issue
Block a user