Skip to content
This repository was archived by the owner on Nov 13, 2024. It is now read-only.

Commit 8a62242

Browse files
committed
_
1 parent f3b4658 commit 8a62242

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed

mainscripts/XSegUtil.py

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import traceback
2+
import json
3+
from pathlib import Path
4+
import numpy as np
5+
6+
from core import pathex
7+
from core.imagelib import IEPolys
8+
from core.interact import interact as io
9+
from DFLIMG import *
10+
11+
12+
def merge(input_dir):
13+
input_path = Path(input_dir)
14+
if not input_path.exists():
15+
raise ValueError('input_dir not found. Please ensure it exists.')
16+
17+
images_paths = pathex.get_image_paths(input_path, return_Path_class=True)
18+
19+
images_processed = 0
20+
for filepath in io.progress_bar_generator(images_paths, "Processing"):
21+
json_filepath = filepath.parent / (filepath.stem+'.json')
22+
if json_filepath.exists():
23+
dflimg = DFLIMG.load(filepath)
24+
if dflimg is not None:
25+
try:
26+
json_dict = json.loads(json_filepath.read_text())
27+
28+
seg_ie_polys = IEPolys()
29+
total_points = 0
30+
31+
#include polys first
32+
for shape in json_dict['shapes']:
33+
if shape['shape_type'] == 'polygon' and \
34+
shape['label'] != '0':
35+
seg_ie_poly = seg_ie_polys.add(1)
36+
37+
for x,y in shape['points']:
38+
seg_ie_poly.add( int(x), int(y) )
39+
total_points += 1
40+
41+
#exclude polys
42+
for shape in json_dict['shapes']:
43+
if shape['shape_type'] == 'polygon' and \
44+
shape['label'] == '0':
45+
seg_ie_poly = seg_ie_polys.add(0)
46+
47+
for x,y in shape['points']:
48+
seg_ie_poly.add( int(x), int(y) )
49+
total_points += 1
50+
51+
if total_points == 0:
52+
io.log_info(f"No points found in {json_filepath}, skipping.")
53+
continue
54+
55+
dflimg.embed_and_set (filepath, seg_ie_polys=seg_ie_polys)
56+
57+
json_filepath.unlink()
58+
59+
images_processed += 1
60+
except:
61+
io.log_err(f"err {filepath}, {traceback.format_exc()}")
62+
return
63+
64+
io.log_info(f"Images processed: {images_processed}")
65+
66+
def split(input_dir ):
67+
input_path = Path(input_dir)
68+
if not input_path.exists():
69+
raise ValueError('input_dir not found. Please ensure it exists.')
70+
71+
images_paths = pathex.get_image_paths(input_path, return_Path_class=True)
72+
73+
images_processed = 0
74+
for filepath in io.progress_bar_generator(images_paths, "Processing"):
75+
json_filepath = filepath.parent / (filepath.stem+'.json')
76+
77+
78+
dflimg = DFLIMG.load(filepath)
79+
if dflimg is not None:
80+
try:
81+
seg_ie_polys = dflimg.get_seg_ie_polys()
82+
if seg_ie_polys is not None:
83+
json_dict = {}
84+
json_dict['version'] = "4.2.9"
85+
json_dict['flags'] = {}
86+
json_dict['shapes'] = []
87+
json_dict['imagePath'] = filepath.name
88+
json_dict['imageData'] = None
89+
90+
for poly_type, points_list in seg_ie_polys:
91+
shape_dict = {}
92+
shape_dict['label'] = str(poly_type)
93+
shape_dict['points'] = points_list
94+
shape_dict['group_id'] = None
95+
shape_dict['shape_type'] = 'polygon'
96+
shape_dict['flags'] = {}
97+
json_dict['shapes'].append( shape_dict )
98+
99+
json_filepath.write_text( json.dumps (json_dict,indent=4) )
100+
101+
dflimg.remove_seg_ie_polys()
102+
dflimg.embed_and_set (filepath)
103+
images_processed += 1
104+
except:
105+
io.log_err(f"err {filepath}, {traceback.format_exc()}")
106+
return
107+
108+
io.log_info(f"Images processed: {images_processed}")

0 commit comments

Comments
 (0)