Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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()