Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ai-ecg-master/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ In this case, takes as input the raw ECG data (sampled at 200 Hz), highly optimi
+ pip install pickle
+ sudo apt install python3-tk

## Setup OpneVINO env
## Setup OpenVINO env
source /opt/intel/openvino/bin/setupvars.sh

## Start AI-ECG demo
python ie_ecg_eval.py -d <CPU|GPU|HDDL|MYRIAD|FPGA>
python ie_ecg_eval.py -d <CPU|GPU|NPU>

## Screenshot
![alt text](ecg3.png)
Expand Down
130 changes: 78 additions & 52 deletions ai-ecg-master/ecg_menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,12 @@ def __init__(self, fontsize=14, labelcolor='black', bgcolor='yellow',
self.bgcolor_rgb = colors.to_rgba(bgcolor)[:3]

class MenuItem(artist.Artist):
parser = mathtext.MathTextParser("Bitmap")
padx = 10
pady = 5
pady = 10

def __init__(self, fig, labelstr, props=None, hoverprops=None,
on_select=None):
artist.Artist.__init__(self)
super().__init__()

self.set_figure(fig)
self.labelstr = labelstr
Expand All @@ -40,23 +39,20 @@ def __init__(self, fig, labelstr, props=None, hoverprops=None,

self.on_select = on_select

x, self.depth = self.parser.to_mask(
labelstr, fontsize=props.fontsize, dpi=fig.dpi)
# Use fig.text for label rendering (figure coordinates)
# Initial position will be updated in set_extent
self.label = fig.text(0, 0, labelstr,
fontsize=props.fontsize,
color=props.labelcolor,
verticalalignment='top',
horizontalalignment='left',
zorder=10)

if props.fontsize != hoverprops.fontsize:
raise NotImplementedError(
'support for different font sizes not implemented')
# Estimate label size (approximate)
self.labelwidth = props.fontsize * len(labelstr) // 2
self.labelheight = props.fontsize + 4
self.depth = self.labelheight

self.labelwidth = x.shape[1]
self.labelheight = x.shape[0]

self.labelArray = np.zeros((x.shape[0], x.shape[1], 4))
self.labelArray[:, :, -1] = x/255.

self.label = image.FigureImage(fig, origin='upper')
self.label.set_array(self.labelArray)

# we'll update these later
self.rect = patches.Rectangle((0, 0), 1, 1)

self.set_hover_props(False)
Expand All @@ -72,14 +68,23 @@ def check_select(self, event):
self.on_select(self)

def set_extent(self, x, y, w, h):
#print(x, y, w, h)
self.rect.set_x(x)
self.rect.set_y(y)
self.rect.set_width(w)
self.rect.set_height(h)

self.label.ox = x + self.padx
self.label.oy = y - self.depth + self.pady/2.
self.rect.set_edgecolor('none')
self.rect.set_linewidth(0)

# Center label on box using normalized figure coordinates
fig = self.figure
fig_width, fig_height = fig.get_size_inches() * fig.dpi
center_x = x + w / 2
center_y = y + h / 2
norm_x = center_x / fig_width
norm_y = center_y / fig_height
self.label.set_position((norm_x, norm_y))
self.label.set_horizontalalignment('center')
self.label.set_verticalalignment('center')

self.hover = False

Expand All @@ -93,11 +98,8 @@ def set_hover_props(self, b):
else:
props = self.props

r, g, b = props.labelcolor_rgb
self.labelArray[:, :, 0] = r
self.labelArray[:, :, 1] = g
self.labelArray[:, :, 2] = b
self.label.set_array(self.labelArray)
self.label.set_color(props.labelcolor)
self.label.set_fontsize(props.fontsize)
self.rect.set(facecolor=props.bgcolor, alpha=props.alpha)

def set_hover(self, event):
Expand All @@ -116,37 +118,61 @@ def set_hover(self, event):
class Menu(object):
def __init__(self, fig, menuitems, x0, y0):
self.figure = fig
fig.suppressComposite = True

self.menuitems = menuitems
self.numitems = len(menuitems)

maxw = max(item.labelwidth for item in menuitems)
maxh = max(item.labelheight for item in menuitems)

totalh = self.numitems*maxh + (self.numitems + 1)*2*MenuItem.pady

x0 = x0
y0 = y0

width = maxw + 2*MenuItem.padx
height = maxh + MenuItem.pady

for item in menuitems:
left = x0
bottom = y0 - maxh - MenuItem.pady

item.set_extent(left, bottom, width, height)

fig.artists.append(item)
x0 += maxw + MenuItem.padx + 15
# Create an overlay axes for the menu bar
self.menu_ax = fig.add_axes([0, 0.94, 1, 0.06], frameon=False)
self.menu_ax.set_xticks([])
self.menu_ax.set_yticks([])
self.menu_ax.set_xlim(0, 1)
self.menu_ax.set_ylim(0, 1)
self.menu_ax.set_facecolor('none')

n = self.numitems
button_width = 1.0 / n
button_height = 1.0
for i, item in enumerate(menuitems):
left = i * button_width
# Set extent in axes coordinates
x_ax = left
y_ax = 0
w_ax = button_width
h_ax = button_height
# Draw rectangle and label in menu_ax
rect = patches.Rectangle((x_ax, y_ax), w_ax, h_ax, facecolor=item.props.bgcolor, alpha=item.props.alpha, edgecolor='none', zorder=1)
self.menu_ax.add_patch(rect)
item.rect = rect
label = self.menu_ax.text(x_ax + w_ax/2, y_ax + h_ax/2, item.labelstr,
fontsize=item.props.fontsize,
color=item.props.labelcolor,
ha='center', va='center', zorder=2)
item.label = label
item._menu_ax = self.menu_ax

fig.canvas.mpl_connect('motion_notify_event', self.on_move)
fig.canvas.mpl_connect('button_release_event', self.on_click)

def on_move(self, event):
draw = False
if event.inaxes != self.menu_ax:
return
for item in self.menuitems:
contains, _ = item.rect.contains(event)
if contains:
item.label.set_color(item.hoverprops.labelcolor)
item.rect.set_facecolor(item.hoverprops.bgcolor)
item.rect.set_alpha(item.hoverprops.alpha)
else:
item.label.set_color(item.props.labelcolor)
item.rect.set_facecolor(item.props.bgcolor)
item.rect.set_alpha(item.props.alpha)
self.figure.canvas.draw_idle()

def on_click(self, event):
if event.inaxes != self.menu_ax:
return
for item in self.menuitems:
draw = item.set_hover(event)
if draw:
self.figure.canvas.draw()
contains, _ = item.rect.contains(event)
if contains and item.on_select:
item.on_select(item)
break
Loading