Il seguente repo contiene il progetto realizzato per il corso di Intelligenza Artificiale 2021/2022.
L’estrazione interattiva in primo piano su un'immagine avviene disegnando un rettangolo contenente la regione in primo piano da estrarre. Tale rettangolo viene dato in input all'algoritmo GrabCut presente all'interno della libreria OpenCV e viene restituita una nuova immagine contenente la regione in primo piano all’interno del rettangolo disegnato.
GrabCut è un metodo di segmentazione delle immagini basato sui tagli dei grafi che non fa uso di tecniche di Machine Learning. Nella Computer Vision la segmentazione è una delle elaborazioni delle immagini cha avviene a livello intermedio.
Testato con:
numpy 1.23.0
opencv_python 4.6.0.66
python 3.9.2
$ git clone https://github.com/mgranchelli/foreground-extraction.git
$ cd ./foreground-extraction
$ pip install -r requirements.txt
$ python3 foreground-extraction.py -i path-image
Nella finestra che mostrerà l'immagine è possibile disegnare un rettangolo con il mouse che conterrà la regione da estrarre. Una volta disegnato il rettangolo si aprirà una nuova finestra contenente la nuova immagine con la regione in primo piano presente all'interno del rettangolo.
Se -i path-image
non specificato verrà aperta l'immagine di default avengers.jpeg.
Per chiudere il processo è possibile digitare q
.
Test effettuati:
$ python3 foreground-extraction.py
$ python3 foreground-extraction.py
$ python3 foreground-extraction.py -i assets/images/jon-snow.jpeg