def __init__(self, winParent): super(ColorFilterWidget, self).__init__() self.setupUi(self) self.winParent = winParent self.imageUpdate.connect(self.updateImage) self.filterValues = ColorFilterValues() self.resetButton.clicked[bool].connect(self.resetValues) self.hminSlider.valueChanged[int].connect(self.hminValueChange) self.hmaxSlider.valueChanged[int].connect(self.hmaxValueChange) self.sminSlider.valueChanged[int].connect(self.sminValueChange) self.smaxSlider.valueChanged[int].connect(self.smaxValueChange) self.vminSlider.valueChanged[int].connect(self.vminValueChange) self.vmaxSlider.valueChanged[int].connect(self.vmaxValueChange)
def __init__(self,winParent): super(ColorFilterWidget, self).__init__() self.setupUi(self) self.winParent=winParent self.imageUpdate.connect(self.updateImage) self.filterValues = ColorFilterValues() self.resetButton.clicked[bool].connect(self.resetValues) self.hminSlider.valueChanged[int].connect(self.hminValueChange) self.hmaxSlider.valueChanged[int].connect(self.hmaxValueChange) self.sminSlider.valueChanged[int].connect(self.sminValueChange) self.smaxSlider.valueChanged[int].connect(self.smaxValueChange) self.vminSlider.valueChanged[int].connect(self.vminValueChange) self.vmaxSlider.valueChanged[int].connect(self.vmaxValueChange)
def __init__(self): self.lock = threading.Lock() self.playButton = False self.cmd = jderobot.CMDVelData() self.cmd.linearX = self.cmd.linearY = self.cmd.linearZ = 0 self.cmd.angularZ = 0 ''' With values distinct to 0 in the next fields, the ardrone not enter in hover mode''' self.cmd.angularX = 0.5 self.cmd.angularY = 1.0 try: ic = Ice.initialize(sys.argv) properties = ic.getProperties() basecamera = ic.propertyToProxy("Introrob.Camera.Proxy") self.cameraProxy = jderobot.CameraPrx.checkedCast(basecamera) if self.cameraProxy: self.image = self.cameraProxy.getImageData("RGB8") self.height = self.image.description.height self.width = self.image.description.width self.trackImage = np.zeros((self.height, self.width, 3), np.uint8) self.trackImage.shape = self.height, self.width, 3 self.thresoldImage = np.zeros((self.height, self.width, 1), np.uint8) self.thresoldImage.shape = self.height, self.width, 1 self.filterValues = ColorFilterValues() else: print 'Interface camera not connected' basecmdVel = ic.propertyToProxy("Introrob.CMDVel.Proxy") self.cmdVelProxy = jderobot.CMDVelPrx.checkedCast(basecmdVel) if not self.cmdVelProxy: print 'Interface cmdVel not connected' basenavdata = ic.propertyToProxy("Introrob.Navdata.Proxy") self.navdataProxy = jderobot.NavdataPrx.checkedCast(basenavdata) if self.navdataProxy: self.navdata = self.navdataProxy.getNavdata() if self.navdata.vehicle == self.ARDRONE_SIMULATED: self.virtualDrone = True else: self.virtualDrone = False else: print 'Interface navdata not connected' self.virtualDrone = True baseextra = ic.propertyToProxy("Introrob.Extra.Proxy") self.extraProxy = jderobot.ArDroneExtraPrx.checkedCast(baseextra) if not self.extraProxy: print 'Interface ardroneExtra not connected' basepose3D = ic.propertyToProxy("Introrob.Pose3D.Proxy") self.pose3DProxy = jderobot.Pose3DPrx.checkedCast(basepose3D) if self.pose3DProxy: self.pose = jderobot.Pose3DData() else: print 'Interface pose3D not connected' except: traceback.print_exc() exit() status = 1
class ColorFilterWidget(QtGui.QWidget, Ui_Form): IMAGE_COLS_MAX=320 IMAGE_ROWS_MAX=240 imageUpdate=QtCore.pyqtSignal() def __init__(self,winParent): super(ColorFilterWidget, self).__init__() self.setupUi(self) self.winParent=winParent self.imageUpdate.connect(self.updateImage) self.filterValues = ColorFilterValues() self.resetButton.clicked[bool].connect(self.resetValues) self.trackButton.clicked[bool].connect(self.track) self.trackObject = False self.hminSlider.valueChanged[int].connect(self.hminValueChange) self.hmaxSlider.valueChanged[int].connect(self.hmaxValueChange) self.sminSlider.valueChanged[int].connect(self.sminValueChange) self.smaxSlider.valueChanged[int].connect(self.smaxValueChange) self.vminSlider.valueChanged[int].connect(self.vminValueChange) self.vmaxSlider.valueChanged[int].connect(self.vmaxValueChange) def updateImage(self): img = self.setInputImage() #self.setThresoldImage() #self.winParent.getSensor().setColorFilterValues(self.filterValues) if img is not None: img_out = self.processImage(img) self.setOutputImage(img_out) def setInputImage(self): if self.trackObject: img = self.winParent.getSensor().getTrackImage() else: img = self.winParent.getSensor().getImage() if img is not None: image = QtGui.QImage(img.data, img.shape[1], img.shape[0], img.shape[1]*img.shape[2], QtGui.QImage.Format_RGB888); self.inputImage.setPixmap(QtGui.QPixmap.fromImage(image)) return img def setThresoldImage(self): img = self.winParent.getSensor().getThresoldImage() if img is not None: image = QtGui.QImage(img.data, img.shape[1], img.shape[0], img.shape[1], QtGui.QImage.Format_Indexed8) self.outputFilterImage.setPixmap(QtGui.QPixmap.fromImage(image)) def setOutputImage(self, img): image = QtGui.QImage(img.data, img.shape[1], img.shape[0], img.shape[1]*img.shape[2], QtGui.QImage.Format_RGB888); self.outputFilterImage.setPixmap(QtGui.QPixmap.fromImage(image)) def processImage(self, img_in): hsv = cv2.cvtColor(img_in, cv2.COLOR_RGB2HSV) vmin = (self.filterValues.hmin, self.filterValues.smin, self.filterValues.vmin) vmax = (self.filterValues.hmax, self.filterValues.smax, self.filterValues.vmax) mask = cv2.inRange(hsv, vmin, vmax) img_out = cv2.bitwise_and(img_in, img_in, mask=mask) return img_out def track(self): if(self.trackObject==False): self.trackButton.setText("Untrack") self.trackObject=True else: self.trackButton.setText("Track") self.trackObject=False def getFilterValues(self): return self.filterValues def setFilterValues(self,values): self.filterValues=values def resetValues(self): self.filterValues.setHMin(0) self.hminSlider.setValue(self.filterValues.getHMin()) self.filterValues.setHMax(180) self.hmaxSlider.setValue(self.filterValues.getHMax()) self.filterValues.setSMin(0) self.sminSlider.setValue(self.filterValues.getSMin()) self.filterValues.setSMax(255) self.smaxSlider.setValue(self.filterValues.getSMax()) self.filterValues.setVMin(0) self.vminSlider.setValue(self.filterValues.getVMin()) self.filterValues.setVMax(255) self.vmaxSlider.setValue(self.filterValues.getVMax()) def closeEvent(self, event): self.winParent.closeColorFilterWidget() def hminValueChange(self, value): self.filterValues.setHMin(value) self.hminValue.setNum(self.filterValues.getHMin()) def hmaxValueChange(self, value): self.filterValues.setHMax(value) self.hmaxValue.setNum(self.filterValues.getHMax()) def sminValueChange(self, value): self.filterValues.setSMin(value) self.sminValue.setNum(self.filterValues.getSMin()) def smaxValueChange(self, value): self.filterValues.setSMax(value) self.smaxValue.setNum(self.filterValues.getSMax()) def vminValueChange(self, value): self.filterValues.setVMin(value) self.vminValue.setNum(self.filterValues.getVMin()) def vmaxValueChange(self, value): self.filterValues.setVMax(value) self.vmaxValue.setNum(self.filterValues.getVMax())
class ColorFilterWidget(QtGui.QWidget, Ui_Form): IMAGE_COLS_MAX = 320 IMAGE_ROWS_MAX = 240 imageUpdate = QtCore.pyqtSignal() def __init__(self, winParent): super(ColorFilterWidget, self).__init__() self.setupUi(self) self.winParent = winParent self.imageUpdate.connect(self.updateImage) self.filterValues = ColorFilterValues() self.resetButton.clicked[bool].connect(self.resetValues) self.hminSlider.valueChanged[int].connect(self.hminValueChange) self.hmaxSlider.valueChanged[int].connect(self.hmaxValueChange) self.sminSlider.valueChanged[int].connect(self.sminValueChange) self.smaxSlider.valueChanged[int].connect(self.smaxValueChange) self.vminSlider.valueChanged[int].connect(self.vminValueChange) self.vmaxSlider.valueChanged[int].connect(self.vmaxValueChange) def updateImage(self): self.setInputImage() self.setThresoldImage() def setInputImage(self): img = self.winParent.grid.map if img != None: image = QtGui.QImage(img.data, img.shape[1], img.shape[0], img.shape[1], QtGui.QImage.Format_Indexed8) self.inputImage.setPixmap(QtGui.QPixmap.fromImage(image)) else: print "image is none" def setThresoldImage(self): if not self.winParent.colorFilter.isChecked(): return img = self.winParent.grid.map img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) minVals = np.array([ self.filterValues.getHMin(), self.filterValues.getVMin(), self.filterValues.getSMin() ]) maxVals = np.array([ self.filterValues.getHMax(), self.filterValues.getVMax(), self.filterValues.getSMax() ]) img = cv2.inRange(img, minVals, maxVals) if img != None: image = QtGui.QImage(img.data, img.shape[1], img.shape[0], img.shape[1], QtGui.QImage.Format_Indexed8) self.outputFilterImage.setPixmap(QtGui.QPixmap.fromImage(image)) def getFilterValues(self): return self.filterValues def setFilterValues(self, values): self.filterValues = values def resetValues(self): self.filterValues.setHMin(0) self.hminSlider.setValue(self.filterValues.getHMin()) self.filterValues.setHMax(0) self.hmaxSlider.setValue(self.filterValues.getHMax()) self.filterValues.setSMin(0) self.sminSlider.setValue(self.filterValues.getSMin()) self.filterValues.setSMax(0) self.smaxSlider.setValue(self.filterValues.getSMax()) self.filterValues.setVMin(0) self.vminSlider.setValue(self.filterValues.getVMin()) self.filterValues.setVMax(0) self.vmaxSlider.setValue(self.filterValues.getVMax()) def closeEvent(self, event): self.winParent.closeColorFilterWidget() def hminValueChange(self, value): self.filterValues.setHMin(value) self.hminValue.setNum(self.filterValues.getHMin()) def hmaxValueChange(self, value): self.filterValues.setHMax(value) self.hmaxValue.setNum(self.filterValues.getHMax()) def sminValueChange(self, value): self.filterValues.setSMin(value) self.sminValue.setNum(self.filterValues.getSMin()) def smaxValueChange(self, value): self.filterValues.setSMax(value) self.smaxValue.setNum(self.filterValues.getSMax()) def vminValueChange(self, value): self.filterValues.setVMin(value) self.vminValue.setNum(self.filterValues.getVMin()) def vmaxValueChange(self, value): self.filterValues.setVMax(value) self.vmaxValue.setNum(self.filterValues.getVMax())
class ColorFilterWidget(QtGui.QWidget, Ui_Form): IMAGE_COLS_MAX=320 IMAGE_ROWS_MAX=240 imageUpdate=QtCore.pyqtSignal() def __init__(self,winParent): super(ColorFilterWidget, self).__init__() self.setupUi(self) self.winParent=winParent self.imageUpdate.connect(self.updateImage) self.filterValues = ColorFilterValues() self.resetButton.clicked[bool].connect(self.resetValues) self.trackButton.clicked[bool].connect(self.track) self.trackObject = False self.hminSlider.valueChanged[int].connect(self.hminValueChange) self.hmaxSlider.valueChanged[int].connect(self.hmaxValueChange) self.sminSlider.valueChanged[int].connect(self.sminValueChange) self.smaxSlider.valueChanged[int].connect(self.smaxValueChange) self.vminSlider.valueChanged[int].connect(self.vminValueChange) self.vmaxSlider.valueChanged[int].connect(self.vmaxValueChange) def updateImage(self): self.setInputImage() self.setThresoldImage() self.winParent.getSensor().setColorFilterValues(self.filterValues) def setInputImage(self): if self.trackObject: img = self.winParent.getSensor().getTrackImage() else: img = self.winParent.getSensor().getImage() if img != None: image = QtGui.QImage(img.data, img.shape[1], img.shape[0], img.shape[1]*img.shape[2], QtGui.QImage.Format_RGB888); self.inputImage.setPixmap(QtGui.QPixmap.fromImage(image)) def setThresoldImage(self): img = self.winParent.getSensor().getThresoldImage() if img != None: image = QtGui.QImage(img.data, img.shape[1], img.shape[0], img.shape[1], QtGui.QImage.Format_Indexed8) self.outputFilterImage.setPixmap(QtGui.QPixmap.fromImage(image)) def track(self): if(self.trackObject==False): self.trackButton.setText("Untrack") self.trackObject=True else: self.trackButton.setText("Track") self.trackObject=False def getFilterValues(self): return self.filterValues def setFilterValues(self,values): self.filterValues=values def resetValues(self): self.filterValues.setHMin(0) self.hminSlider.setValue(self.filterValues.getHMin()) self.filterValues.setHMax(0) self.hmaxSlider.setValue(self.filterValues.getHMax()) self.filterValues.setSMin(0) self.sminSlider.setValue(self.filterValues.getSMin()) self.filterValues.setSMax(0) self.smaxSlider.setValue(self.filterValues.getSMax()) self.filterValues.setVMin(0) self.vminSlider.setValue(self.filterValues.getVMin()) self.filterValues.setVMax(0) self.vmaxSlider.setValue(self.filterValues.getVMax()) def closeEvent(self, event): self.winParent.closeColorFilterWidget() def hminValueChange(self, value): self.filterValues.setHMin(value) self.hminValue.setNum(self.filterValues.getHMin()) def hmaxValueChange(self, value): self.filterValues.setHMax(value) self.hmaxValue.setNum(self.filterValues.getHMax()) def sminValueChange(self, value): self.filterValues.setSMin(value) self.sminValue.setNum(self.filterValues.getSMin()) def smaxValueChange(self, value): self.filterValues.setSMax(value) self.smaxValue.setNum(self.filterValues.getSMax()) def vminValueChange(self, value): self.filterValues.setVMin(value) self.vminValue.setNum(self.filterValues.getVMin()) def vmaxValueChange(self, value): self.filterValues.setVMax(value) self.vmaxValue.setNum(self.filterValues.getVMax())
class ColorFilterWidget(QtGui.QWidget, Ui_Form): IMAGE_COLS_MAX=320 IMAGE_ROWS_MAX=240 imageUpdate=QtCore.pyqtSignal() def __init__(self,winParent): super(ColorFilterWidget, self).__init__() self.setupUi(self) self.winParent=winParent self.imageUpdate.connect(self.updateImage) self.filterValues = ColorFilterValues() self.resetButton.clicked[bool].connect(self.resetValues) self.hminSlider.valueChanged[int].connect(self.hminValueChange) self.hmaxSlider.valueChanged[int].connect(self.hmaxValueChange) self.sminSlider.valueChanged[int].connect(self.sminValueChange) self.smaxSlider.valueChanged[int].connect(self.smaxValueChange) self.vminSlider.valueChanged[int].connect(self.vminValueChange) self.vmaxSlider.valueChanged[int].connect(self.vmaxValueChange) def updateImage(self): self.setInputImage() self.setThresoldImage() def setInputImage(self): img = self.winParent.grid.map if img != None: image = QtGui.QImage(img.data, img.shape[1], img.shape[0], img.shape[1], QtGui.QImage.Format_Indexed8) self.inputImage.setPixmap(QtGui.QPixmap.fromImage(image)) else: print "image is none" def setThresoldImage(self): if not self.winParent.colorFilter.isChecked(): return img = self.winParent.grid.map img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) minVals = np.array([self.filterValues.getHMin(), self.filterValues.getVMin(), self.filterValues.getSMin()]) maxVals = np.array([self.filterValues.getHMax(), self.filterValues.getVMax(), self.filterValues.getSMax()]) img = cv2.inRange(img, minVals, maxVals) if img != None: image = QtGui.QImage(img.data, img.shape[1], img.shape[0], img.shape[1], QtGui.QImage.Format_Indexed8) self.outputFilterImage.setPixmap(QtGui.QPixmap.fromImage(image)) def getFilterValues(self): return self.filterValues def setFilterValues(self,values): self.filterValues=values def resetValues(self): self.filterValues.setHMin(0) self.hminSlider.setValue(self.filterValues.getHMin()) self.filterValues.setHMax(0) self.hmaxSlider.setValue(self.filterValues.getHMax()) self.filterValues.setSMin(0) self.sminSlider.setValue(self.filterValues.getSMin()) self.filterValues.setSMax(0) self.smaxSlider.setValue(self.filterValues.getSMax()) self.filterValues.setVMin(0) self.vminSlider.setValue(self.filterValues.getVMin()) self.filterValues.setVMax(0) self.vmaxSlider.setValue(self.filterValues.getVMax()) def closeEvent(self, event): self.winParent.closeColorFilterWidget() def hminValueChange(self, value): self.filterValues.setHMin(value) self.hminValue.setNum(self.filterValues.getHMin()) def hmaxValueChange(self, value): self.filterValues.setHMax(value) self.hmaxValue.setNum(self.filterValues.getHMax()) def sminValueChange(self, value): self.filterValues.setSMin(value) self.sminValue.setNum(self.filterValues.getSMin()) def smaxValueChange(self, value): self.filterValues.setSMax(value) self.smaxValue.setNum(self.filterValues.getSMax()) def vminValueChange(self, value): self.filterValues.setVMin(value) self.vminValue.setNum(self.filterValues.getVMin()) def vmaxValueChange(self, value): self.filterValues.setVMax(value) self.vmaxValue.setNum(self.filterValues.getVMax())