Spaces:
Running on Zero
Running on Zero
Download segmentation.py from CronosSa/Solaria1.0: direct link, hf CLI and curl.
- Browser
- Download file 1.13 kB
-
https://huggingface.co/spaces/CronosSa/Solaria1.0/resolve/main/segmentation.py
- Command line
-
hf download hf://spaces/CronosSa/Solaria1.0/segmentation.py
-
curl -L -o segmentation.py https://huggingface.co/spaces/CronosSa/Solaria1.0/resolve/main/segmentation.py
1.13 kB
| import numpy as np | |
| from PIL import Image | |
| from rembg import remove, new_session | |
| # Mantém a sessão carregada para não baixar/carregar | |
| # o modelo novamente a cada imagem. | |
| _session = None | |
| def carregar_segmentador(): | |
| global _session | |
| if _session is None: | |
| _session = new_session("isnet-general-use") | |
| return _session | |
| def gerar_mascara(imagem: Image.Image): | |
| """ | |
| Gera uma máscara do objeto principal da imagem. | |
| Branco = objeto | |
| Preto = fundo | |
| """ | |
| if imagem is None: | |
| raise ValueError("Nenhuma imagem foi enviada.") | |
| imagem = imagem.convert("RGB") | |
| session = carregar_segmentador() | |
| mascara = remove( | |
| imagem, | |
| session=session, | |
| only_mask=True, | |
| post_process_mask=True | |
| ) | |
| if not isinstance(mascara, Image.Image): | |
| mascara = Image.fromarray( | |
| np.asarray(mascara) | |
| ) | |
| mascara = mascara.convert("L") | |
| # Garante que a máscara tenha exatamente | |
| # o mesmo tamanho da imagem original. | |
| mascara = mascara.resize( | |
| imagem.size, | |
| Image.Resampling.LANCZOS | |
| ) | |
| return mascara |