You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.2 KiB
56 lines
2.2 KiB
import cv2 |
|
import numpy as np |
|
|
|
def main(): |
|
img = cv2.imread('hello_iso_gb.png') |
|
if img is None: |
|
print("Error: Could not load hello_iso_gb.png") |
|
return |
|
|
|
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) |
|
h, w = gray.shape |
|
|
|
# Create a markup copy of the image |
|
markup = img.copy() |
|
|
|
# We want to detect the rendering glitches (black V-shapes or gaps cutting into the floor tiles) |
|
# The floor tiles are White (255) and Light Gray (153) with Dark Gray (85) lines. |
|
# The empty background is Black (0). |
|
# Inside the walkable path, any Black (0) pixel that is surrounded by floor tile colors |
|
# represents a cutout glitch. |
|
# Let's use morphological operations to find these black cutouts inside the tiles. |
|
|
|
# Threshold to find floor tiles (value > 50, so anything not black) |
|
_, floor_mask = cv2.threshold(gray, 50, 255, cv2.THRESH_BINARY) |
|
|
|
# Invert to find black pixels |
|
black_mask = cv2.bitwise_not(floor_mask) |
|
|
|
# Find contours of the black regions |
|
contours, _ = cv2.findContours(black_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) |
|
|
|
glitch_count = 0 |
|
for cnt in contours: |
|
x, y, rw, rh = cv2.boundingRect(cnt) |
|
|
|
# The screen border is black, so we ignore black regions touching the screen boundaries |
|
if x <= 2 or y <= 2 or (x + rw) >= w - 2 or (y + rh) >= h - 2: |
|
continue |
|
|
|
# Glitches are small black gaps/triangles. Typically small (e.g. area between 4 and 40 pixels) |
|
area = cv2.contourArea(cnt) |
|
if 2 <= area <= 50: |
|
# Check if it's inside the checkerboard area |
|
# (which is roughly centered on the screen) |
|
cv2.rectangle(markup, (x, y), (x + rw, y + rh), (0, 0, 255), 1) # Red box |
|
glitch_count += 1 |
|
|
|
print(f"Detected {glitch_count} rendering glitches (black cutouts/gaps) inside the floor map.") |
|
|
|
# Save the marked-up image to the artifacts directory |
|
output_path = '/home/enne2/.gemini/antigravity-ide/brain/eebf5acd-ae2e-41bb-858e-6a4a5ca41897/analyzed_tiles.png' |
|
cv2.imwrite(output_path, markup) |
|
print(f"Saved analysis markup to: {output_path}") |
|
|
|
if __name__ == '__main__': |
|
main()
|
|
|