forked from beephole/BulkBackgroundRemove
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
45 lines (38 loc) · 1.88 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from datetime import datetime
from rembg import new_session, remove
from pathlib import Path
from pick import pick
import logging
import os
def process_images(input_folder):
getdatetime = datetime.now()
date_time = getdatetime.strftime("%d_%m_%Y_%H_%M_%S")
logging.basicConfig(filename=date_time + '_bgr.log', filemode='w', format='%(asctime)s - %(message)s', datefmt='%d/%m/%y %H:%M:%S')
logging.warning('Warming up...')
title = 'Choose model which will be used for background removal: '
options = ['u2net', 'u2netp', 'u2net_human_seg', 'u2net_cloth_seg', 'silueta', 'isnet-general-use', 'isnet-anime', 'sam']
option, index = pick(options, title, indicator='=>', default_index=0)
selected_model = option
before_folder = input_folder / 'before_bgr'
before_folder.mkdir(exist_ok=True)
output_folder = input_folder / 'after_bgr'
output_folder.mkdir(exist_ok=True)
model_name = new_session(selected_model)
print('Processing files using model: ' + selected_model)
logging.warning('Processing files using model: ' + selected_model)
for file in before_folder.glob('*'):
if file.suffix in ['.jpg', '.jpeg','.png', '.JPG', '.JPEG','.PNG']:
output_path = output_folder / (file.stem + "_" + selected_model + "_" + date_time + ".png")
print('Opening ' + file.stem)
logging.warning('Opening ' + file.stem)
with open(file, 'rb') as i:
with open(output_path, 'wb') as o:
img_data = i.read()
output = remove(img_data, session=model_name)
o.write(output)
print('File ' + file.stem + ' done')
logging.warning('File ' + file.stem + ' done')
if __name__ == "__main__":
current_folder = Path(os.getcwd())
process_images(current_folder)
logging.warning('Processing done')