Skip to content

Commit f653d63

Browse files
committed
merge and review
1 parent 34d218a commit f653d63

File tree

9 files changed

+29
-64
lines changed

9 files changed

+29
-64
lines changed

imagepy/menus/Analysis/Region Analysis/regionprops_plgs.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class RegionCounter(Simple):
1616
title = 'Geometry Analysis'
1717
note = ['8-bit', '16-bit', 'int']
1818
para = {'con':'8-connect', 'center':True, 'area':True, 'l':True, 'extent':False, 'cov':False, 'slice':False,
19-
'ed':False, 'holes':False, 'ca':False, 'fa':False, 'solid':False}
19+
'ed':False, 'holes':False, 'ca':False, 'fa':False, 'solid':False, 'labeled':False}
2020
view = [(list, 'con', ['4-connect', '8-connect'], str, 'conection', 'pix'),
2121
(bool, 'slice', 'slice'),
2222
('lab', None, '========= indecate ========='),
@@ -29,7 +29,8 @@ class RegionCounter(Simple):
2929
(bool, 'holes', 'holes'),
3030
(bool, 'fa', 'filled area'),
3131
(bool, 'solid', 'solidity'),
32-
(bool, 'cov', 'cov')]
32+
(bool, 'cov', 'cov'),
33+
(bool, 'labeled', 'has been labeled')]
3334

3435
#process
3536
def run(self, ips, imgs, para = None):
@@ -51,7 +52,7 @@ def run(self, ips, imgs, para = None):
5152
data, mark = [], {'type':'layers', 'body':{}}
5253
strc = generate_binary_structure(2, 1 if para['con']=='4-connect' else 2)
5354
for i in range(len(imgs)):
54-
label(imgs[i], strc, output=buf)
55+
np.copyto(imgs[i], buf) if para['labeled'] else label(imgs[i], strc, output=buf)
5556
ls = regionprops(buf)
5657

5758
dt = [[i]*len(ls), list(range(len(ls)))]

imagepy/menus/Analysis/statistic_plg.py

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,15 @@ def show_hist(parent, title, hist):
6868

6969
class Histogram(Simple):
7070
title = 'Histogram'
71-
note = ['8-bit', '16-bit', 'rgb']
71+
note = ['all']
7272

7373
def run(self, ips, imgs, para = None):
7474
msk = ips.mask('in')
75+
rg = np.linspace(*ips.range, 257)
76+
img = ips.img if msk is None else ips.img[msk]
7577
if ips.channels == 3:
76-
img = ips.img if msk is None else ips.img[msk]
77-
hist = [np.histogram(img.ravel()[i::3], np.arange(257))[0] for i in (0,1,2)]
78-
else:
79-
img = ips.lookup() if msk is None else ips.lookup()[msk]
80-
hist = np.histogram(img, np.arange(257))[0]
78+
hist = [np.histogram(img.ravel()[i::3], rg)[0] for i in (0,1,2)]
79+
else: hist = np.histogram(img,rg)[0]
8180
show_hist(self.app, ips.title+'-Histogram', hist)
8281

8382
class Frequence(Simple):
@@ -94,11 +93,9 @@ def run(self, ips, imgs, para = None):
9493
msk = ips.mask('in')
9594
for i in range(len(imgs)):
9695
img = imgs[i] if msk is None else imgs[i][msk]
97-
maxv = img.max()
98-
if maxv==0:continue
99-
ct = np.histogram(img, maxv+1, [0,maxv])[0]
96+
ct = np.bincount(img.ravel()) #np.histogram(img, maxv+1, [0,maxv])[0]
10097
titles = ['slice','value','count']
101-
dt = [[i]*len(ct), list(range(maxv+1)), ct]
98+
dt = [np.ones(len(ct), dtype=np.uint32)+i, np.arange(len(ct)), ct]
10299
if not para['slice']:
103100
titles, dt = titles[1:], dt[1:]
104101
if self.para['fre']:
@@ -144,27 +141,6 @@ def run(self, ips, imgs, para = None):
144141
data.append(self.count(img, para))
145142
self.progress(n, len(imgs))
146143
self.app.show_table(pd.DataFrame(data, columns=titles), ips.title+'-statistic')
147-
148-
class Mark:
149-
def __init__(self, data):
150-
self.data = data
151-
152-
def draw(self, dc, f, **key):
153-
dc.SetPen(wx.Pen((255,255,0), width=1, style=wx.SOLID))
154-
dc.SetTextForeground((255,255,0))
155-
font = wx.Font(8, wx.FONTFAMILY_DEFAULT,
156-
wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
157-
158-
dc.SetFont(font)
159-
data = self.data[0 if len(self.data)==1 else key['cur']]
160-
161-
for i in range(len(data)):
162-
pos = f(*(data[i][0], data[i][1]))
163-
dc.SetBrush(wx.Brush((255,255,255)))
164-
dc.DrawCircle(pos[0], pos[1], 2)
165-
dc.SetBrush(wx.Brush((0,0,0), wx.BRUSHSTYLE_TRANSPARENT))
166-
dc.DrawCircle(pos[0], pos[1], data[i][2]*key['k'])
167-
dc.DrawText('id={}, r={}'.format(i, data[i][2]), pos[0], pos[1])
168144

169145
class PointsValue(Simple):
170146
title = 'Points Value'

imagepy/menus/File/new_plg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import numpy as np
99

1010
class Plugin(Free):
11-
title = 'New'
11+
title = 'New Image'
1212
para = {'name':'Undefined','width':300, 'height':300, 'type':'8-bit','slice':1}
1313
view = [(str, 'name', 'name', ''),
1414
(int, 'width', (1,10240), 0, 'width', 'pix'),

imagepy/menus/Image/Color/splitandmerge_plgs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def run(self, ips, imgs, para = None):
2121
for c,ci in zip((r,g,b),(0,1,2)):
2222
if self.para['copy']:c.append(i[:,:,ci].copy())
2323
else: c.append(i[:,:,ci])
24-
self.progress(i, n)
24+
self.progress(n+1, len(imgs))
2525
for im, tl in zip([r,g,b],['red','green','blue']):
2626
self.app.show_img(im, ips.title+'-'+tl)
2727
if self.para['destory']:

imagepy/menus/Window/windowskiller_plg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class ImageKiller(Free):
1616
(bool, 'all', 'close all images')]
1717

1818
def run(self, para = None):
19-
self.app.close_image(None if para['all'] else para['img'])
19+
self.app.close_img(None if para['all'] else para['img'])
2020

2121
class TableKiller(Free):
2222
title = 'Kill Table'

sciapp/app.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ def __init__(self, asyn=True):
66
self.asyn = asyn
77
self.managers = {}
88
self.img_manager = self.manager('img')
9-
self.wimg_manager = self.manager('wimg')
9+
#self.wimg_manager = self.manager('wimg')
1010
self.tab_manager = self.manager('tab')
11-
self.wtab_manager = self.manager('wtab')
11+
#self.wtab_manager = self.manager('wtab')
1212
self.mesh_manager = self.manager('mesh')
1313
self.wmesh_manager = self.manager('wmesh')
1414
self.task_manager = self.manager('task')
@@ -40,8 +40,8 @@ def show_img(self, img, name):
4040
self.img_manager.add(img.name, img)
4141
print(img.info)
4242

43-
def add_img_win(self, win, name):
44-
self.wimg_manager.add(name, win)
43+
#def add_img_win(self, win, name):
44+
# self.wimg_manager.add(name, win)
4545

4646
def close_img(self, name):
4747
self.img_manager.remove(name)

sciwx/canvas/mcanvas.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,7 @@ def on_scroll(self, event):
258258
self.canvas.on_idle(event)
259259

260260
def on_idle(self, event):
261-
if self.image.img is None:
262-
return
261+
if self.image.img is None: return
263262
image, info = self.image, self.lab_info.GetLabel()
264263
imgs = image.slices, image.channels, image.cn, image.cur
265264
selfs = self.pages ,self.chans, self.cn, self.cur

sciwx/widgets/paradialog.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@ def init_view(self, items, para, preview=False, modal=True, app=None):
5252
self.para, self.modal = para, modal
5353
for item in items:
5454
self.add_ctrl_(widgets[item[0]], item[1], item[2:], app=app)
55-
if preview:self.add_ctrl_(Check, 'preview', ('preview',), app=app)
55+
if preview: self.add_ctrl_(Check, 'preview', ('preview',), app=app)
5656
self.reset(para)
57+
for p in self.ctrl_dic:
58+
if p in para: para[p] = self.ctrl_dic[p].GetValue()
5759
self.add_confirm(modal)
5860
wx.Dialog.Bind(self, wx.EVT_WINDOW_DESTROY, self.OnDestroy)
5961
#wx.Dialog.Bind(self, wx.EVT_IDLE, lambda e: self.reset())

sciwx/widgets/ribbonbar.py

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -132,28 +132,15 @@ def start(self, app):
132132
def __call__(self):
133133
return self
134134

135-
# data = ('menu', [
136-
# ('File', None, [
137-
# ('Open CV', (255,0,0), P('O')),
138-
# '-',
139-
# ('Close', None, P('C'))]),
140-
# ('Edit', None, [('Copy', None, P('C')),
141-
# ('A', None, [('B', None, P('B')),
142-
# ('C', None, P('C'))]),
143-
# ('Paste', None, P('P'))])])
144-
145135
data = ('menu', [
146-
('File', [
147-
('Open', P('O')),
136+
('File', None, [
137+
('Open CV', (255,0,0), P('O')),
148138
'-',
149-
('Close', P('C'))]),
150-
('Edit', [
151-
('Copy', P('C')),
152-
('A', [
153-
('B', P('B')),
154-
('C', P('C'))]),
155-
('Paste', P('P'))])])
156-
139+
('Close', None, P('C'))]),
140+
('Edit', None, [('Copy', None, P('C')),
141+
('A', None, [('B', None, P('B')),
142+
('C', None, P('C'))]),
143+
('Paste', P('P'))])])
157144
app = wx.App()
158145
frame = wx.Frame(None)
159146
menubar = RibbonBar(frame)

0 commit comments

Comments
 (0)