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