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)
예제 #3
0
    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())
예제 #6
0
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())