68 lines
1.9 KiB
Python
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)
|