Files
novafarma/scripts/utils/chroma_key_green.py
2026-01-25 12:20:50 +01:00

68 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""
Chroma Key Green Screen Removal
Odstrani zeleno ozadje (#00FF00) in naredi transparentno
"""
from PIL import Image
import os
def remove_green_background(input_path, output_path, tolerance=30):
"""
Odstrani zeleno ozadje in naredi transparentno
Args:
input_path: Pot do vhodne slike
output_path: Pot do izhodne slike
tolerance: Toleranca za zeleno barvo (0-255)
"""
print(f"Processing: {input_path}")
# Odpri sliko
img = Image.open(input_path)
img = img.convert("RGBA")
# Pridobi pixel podatke
datas = img.getdata()
new_data = []
for item in datas:
# Preveri če je pixel zelen (#00FF00 oz. blizu)
# Zelena je visoka, rdeča in modra sta nizki
# Agresivnejša detekcija - če je zelena močnejša od rdečega in modrega
if item[1] > 100 and (item[1] > item[0] + 50) and (item[1] > item[2] + 50):
# Spremeni v transparentno
new_data.append((255, 255, 255, 0))
else:
# Obdrži original
new_data.append(item)
# Posodobi sliko
img.putdata(new_data)
# Shrani
img.save(output_path, "PNG")
print(f"✓ Saved: {output_path}")
# Slike za obdelavo
images = [
("NOVE_SLIKE/UI/gauge_shattered.png", "NOVE_SLIKE/UI/gauge_shattered.png"),
("NOVE_SLIKE/UI/vignette_bloody.png", "NOVE_SLIKE/UI/vignette_bloody.png"),
("NOVE_SLIKE/UI/icon_photo.png", "NOVE_SLIKE/UI/icon_photo.png"),
("NOVE_SLIKE/UI/icon_longboard.png", "NOVE_SLIKE/UI/icon_longboard.png"),
]
print("=" * 60)
print("CHROMA KEY - Odstranjevanje zelenega ozadja")
print("=" * 60)
for input_img, output_img in images:
if os.path.exists(input_img):
remove_green_background(input_img, output_img, tolerance=50)
else:
print(f"✗ File not found: {input_img}")
print("\n" + "=" * 60)
print("KONČANO! Vsa zelena ozadja so odstranjena.")
print("=" * 60)