Beispiel #1
0
 def mousePressEvent(self, event):
     super(MeasureWidget.MyImage, self).mousePressEvent(event)
     if Qt.LeftButton == event.button():
         if Qt.ShiftModifier == event.modifiers():
             if len(self.points) > 0:
                 cnt = LiveContour(self.lastPt, self.p)
                 s = tuple(cnt[-1])
                 self.curves.append(cnt)
                 self.numberOfPoints = self.numberOfPoints + len(cnt)
                 self.pointsChanged.emit()
             else:
                 s = (event.x(), event.y())
         
             self.points.append(s)
             mylivewire.mylivewire(self.p, s, self.G)
             self.curCrv = None                    
         else:
             self.lastPt = (event.y(), event.x())
             self.curCrv = LiveContour(self.lastPt, self.p)
         self.repaint()
     elif Qt.RightButton == event.button():
         self.interpCurve = None
         self.inflections = None            
         try:
             self.points.pop()        
             cnt = self.curves.pop()        
             self.numberOfPoints = self.numberOfPoints - len(cnt)
             self.pointsChanged.emit()
             s = self.points[-1]
             mylivewire.mylivewire(self.p, s, self.G)
         except IndexError:
             pass
         self.repaint()
Beispiel #2
0
        def mousePressEvent(self, event):
            super(MeasureWidget.MyImage, self).mousePressEvent(event)
            if Qt.LeftButton == event.button():
                if Qt.ShiftModifier == event.modifiers():
                    if len(self.points) > 0:
                        cnt = LiveContour(self.lastPt, self.p)
                        s = tuple(cnt[-1])
                        self.curves.append(cnt)
                        self.numberOfPoints = self.numberOfPoints + len(cnt)
                        self.pointsChanged.emit()
                    else:
                        s = (event.x(), event.y())

                    self.points.append(s)
                    mylivewire.mylivewire(self.p, s, self.G)
                    self.curCrv = None
                else:
                    self.lastPt = (event.y(), event.x())
                    self.curCrv = LiveContour(self.lastPt, self.p)
                self.repaint()
            elif Qt.RightButton == event.button():
                self.interpCurve = None
                self.inflections = None
                try:
                    self.points.pop()
                    cnt = self.curves.pop()
                    self.numberOfPoints = self.numberOfPoints - len(cnt)
                    self.pointsChanged.emit()
                    s = self.points[-1]
                    mylivewire.mylivewire(self.p, s, self.G)
                except IndexError:
                    pass
                self.repaint()
Beispiel #3
0
def click_and_draw(event, x, y, flags, param):
    fontscale = 0.5
    pointscale = 3
    global last_x
    global last_y
    
    if event == cv2.EVENT_LBUTTONDOWN:
        if flags & cv2.EVENT_FLAG_SHIFTKEY:
            if len(points) > 0:
                #cnt = livecontour((y, x), p)
                cnt = livecontour((last_y, last_x), p)
                s = tuple(cnt[-1])
                curves.append(cnt)
            else:
                s = (x, y)   
            
            points.append(s)
            mylivewire.mylivewire(p, s, G)
            tImg = computeAndDraw(points, curves, fontscale, pointscale)
            np.copyto(dispImg, tImg)
            
        else:
            last_x = x
            last_y = y
            if len(points) > 0:
                tImg = cv2.cvtColor(img, cv2.COLOR_GRAY2RGB)
                for spt in points:
                    cv2.circle(tImg, spt, pointscale, (255, 170, 0), -1)
                if len(curves) > 0:
                    cv2.polylines(tImg, curves, False, (255, 0, 0), thickness=2)

                cnt = livecontour((y, x), p)
                cv2.polylines(tImg, [cnt], False, (255, 0, 0), thickness=2)
                np.copyto(dispImg, tImg)
                
    elif event == cv2.EVENT_RBUTTONDOWN:        
        try:
            points.pop()        
            curves.pop()
        
            s = points[-1]
            mylivewire.mylivewire(p, s, G)
            tImg = computeAndDraw(points, curves, fontscale, pointscale)
            np.copyto(dispImg, tImg)
        except IndexError:
            np.copyto(dispImg, cv2.cvtColor(img, cv2.COLOR_GRAY2RGB))