forked from zsylvester/segmenteverygrain
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_edit.py
55 lines (45 loc) · 1.26 KB
/
run_edit.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
46
47
48
49
50
51
52
53
54
55
import matplotlib.pyplot as plt
import segment_anything
import segmenteverygrain.interactions as si
FIGSIZE = (12, 8) # in
PX_PER_M = 1 # px/m; be sure not to convert units twice!
# Load test image
fn = 'torrey_pines_beach_image.jpeg'
image = si.load_image(fn)
# Load SAM
fn = 'sam_vit_h_4b8939.pth'
sam = segment_anything.sam_model_registry['default'](checkpoint=fn)
predictor = segment_anything.SamPredictor(sam)
predictor.set_image(image)
# Load grains
fn = './output/test_auto_grains.csv'
grains = si.load_grains(fn)
# grains = []
# Display editing interface
plot = si.GrainPlot(
grains,
image=image,
predictor=predictor,
blit=True,
figsize=FIGSIZE
)
plot.activate()
plt.show(block=True)
plot.deactivate()
# Save results
fn = './output/test_edit'
# Convert units
pass
# Grain shapes
# for g in grains:
# g.measure(image=image)
si.save_grains(fn + '_grains.csv', plot.grains)
# Grain image
plot.savefig(fn + '_grains.jpg')
# Summary data
si.save_summary(fn + '_summary.csv', plot.grains, px_per_m=PX_PER_M)
# Summary histogram
si.save_histogram(fn + '_summary.jpg', plot.grains, px_per_m=PX_PER_M)
# Training mask
si.save_mask(fn + '_mask.png', plot.grains, image, scale=False)
si.save_mask(fn + '_mask.jpg', plot.grains, image, scale=True)