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()
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))