def plot(self, img): """ Plots and call auxfun_drag class for moving and removing points. """ self.drs = [] self.updatedCoords = [] for bpindex, bp in enumerate(self.bodyparts): color = self.colormap(self.norm(self.colorIndex[bpindex])) self.points = [ self.dataFrame[self.scorer][bp]['x'].values[self.iter], self.dataFrame[self.scorer][bp]['y'].values[self.iter] ] circle = [ patches.Circle((self.points[0], self.points[1]), radius=self.markerSize, fc=color, alpha=self.alpha) ] self.axes.add_patch(circle[0]) self.dr = auxfun_drag_label.DraggablePoint(circle[0], self.bodyparts[bpindex]) self.dr.connect() self.dr.coords = MainFrame.getLabels(self, self.iter)[bpindex] self.drs.append(self.dr) self.updatedCoords.append(self.dr.coords) if np.isnan(self.points)[0] == False: self.buttonCounter.append(bpindex) self.figure.canvas.draw() return (self.buttonCounter)
def onClick(self,event): """ This function adds labels and auto advances to the next label. """ x1 = event.xdata y1 = event.ydata if event.button == 3: if self.rdb.GetSelection() in self.buttonCounter : wx.MessageBox('%s is already annotated. \n Select another body part to annotate.' % (str(self.bodyparts[self.rdb.GetSelection()])), 'Error!', wx.OK | wx.ICON_ERROR) else: color = self.colormap(self.norm(self.colorIndex[self.rdb.GetSelection()])) circle = [patches.Circle((x1, y1), radius = self.markerSize, fc=color, alpha=self.alpha)] self.num.append(circle) self.axes.add_patch(circle[0]) self.dr = auxfun_drag_label.DraggablePoint(circle[0],self.bodyparts[self.rdb.GetSelection()]) self.dr.connect() self.buttonCounter.append(self.rdb.GetSelection()) self.dr.coords = [[x1,y1,self.bodyparts[self.rdb.GetSelection()],self.rdb.GetSelection()]] self.drs.append(self.dr) self.updatedCoords.append(self.dr.coords) if self.rdb.GetSelection() < len(self.bodyparts) -1: self.rdb.SetSelection(self.rdb.GetSelection() + 1) self.figure.canvas.draw() self.canvas.mpl_disconnect(self.onClick) self.canvas.mpl_disconnect(self.onButtonRelease)
def onClick(self,event): x1 = event.xdata y1 = event.ydata self.drs = [] normalize = mcolors.Normalize(vmin=np.min(self.colorparams), vmax=np.max(self.colorparams)) if event.button == 3: if self.rdb.GetSelection() in self.buttonCounter : try: new_sel = self.buttonCounter[-1]+1 self.rdb.Select(new_sel) self.buttonCounter.append(new_sel) except: # fallback: warn user wx.MessageBox('%s is already annotated. \n Select another body part to annotate.' % (str(self.bodyparts[self.rdb.GetSelection()])), 'Error!', wx.OK | wx.ICON_ERROR) if self.flag == len(self.bodyparts): wx.MessageBox('All body parts are annotated! Click \'Save\' to save the changes. \n Click OK to continue.', 'Done!', wx.OK | wx.ICON_INFORMATION) self.canvas.mpl_disconnect(self.onClick) color = self.colormap(normalize(self.rdb.GetSelection())) circle = [patches.Circle((x1, y1), radius = self.markerSize, fc=color, alpha=0.5)] self.num.append(circle) self.ax1f1.add_patch(circle[0]) self.dr = auxfun_drag_label.DraggablePoint(circle[0],self.bodyparts[self.rdb.GetSelection()]) self.dr.connect() self.buttonCounter.append(self.rdb.GetSelection()) self.dr.coords = [[x1,y1,self.bodyparts[self.rdb.GetSelection()],self.rdb.GetSelection()]] self.drs.append(self.dr) self.updatedCoords.append(self.dr.coords) elif event.button == 2: self.zoom(None) self.canvas.mpl_disconnect(self.onClick)
def plot(self, img): """ Plots and call auxfun_drag class for moving and removing points. """ if self.drs is not None: self.currentCoords = [] for dr in self.drs: self.currentCoords.append(dr.final_point) self.drs = [] for coord_idx, coord in enumerate(self.currentCoords): color = self.colormap(coord_idx * 20) circle = [ patches.Circle((coord[0], coord[1]), radius=2, fc=color, alpha=1) ] self.axes.add_patch(circle[0]) dr = auxfun_drag_label.DraggablePoint(circle[0], '%d' % coord_idx) dr.connect() self.drs.append(dr) self.figure.canvas.draw()