a b/bash_app.py
1
import argparse
2
import os
3
import cv2
4
from src.production import make_masks, data_to_paths, create_folder, get_setup, make_legend
5
6
# parser arguments
7
parser = argparse.ArgumentParser()
8
parser.add_argument("--data",
9
                    help="image or folder with CT-images,"
10
                         "supported image formats: png, jpg, jpeg"
11
                         "also you can use .nii or .nii.gz formats",
12
                    required=True)
13
parser.add_argument("--save_folder",
14
                    help="folder to save segmentations and images",
15
                    default="example",
16
                    required=True)
17
parser.add_argument("--multi",
18
                    action="store_true",
19
                    default=False,
20
                    help="if \"multi\" shows ground-glass opacities and consolidation")
21
parser.add_argument("--show_legend",
22
                    action="store_true",
23
                    default=False,
24
                    help="if \"show_legend\" legend shows on image")
25
26
# parsing
27
args = parser.parse_args()
28
save_folder = args.save_folder
29
30
# setup
31
models, transforms = get_setup()
32
33
# reformatting all data to png format and getting paths
34
paths = data_to_paths(args.data, args.save_folder)
35
36
# preparing place for segmentation
37
for x in ['segmentations', 'annotations']:
38
    create_folder(os.path.join(save_folder, x))
39
40
# prediction
41
for img, annotation, path in make_masks(paths, models, transforms, args.multi):
42
    # annotation saving
43
    print(path)
44
    name = path.split('\\')[-1].split('.')[0].split('/')[-1]
45
    print(name)
46
    with open(os.path.join(save_folder, 'annotations', name + '_annotation.txt'), mode='w') as f:
47
        f.write(annotation)
48
49
    # image saving
50
    path = os.path.join(save_folder, 'segmentations', name + '_mask.png')
51
    if args.show_legend:
52
        img = make_legend(img, annotation)
53
    cv2.imwrite(path, img)
54
    print(path, annotation, '', sep='\n')