Exemplo n.º 1
0
    def addColorLayer(self, layer=None, name='Unnamed', tip='',
                      color=None, alpha=0.5):
        '''
        add a [layer], a np.array (2d or 3d), as colour overlay to the image
        '''
        if layer is None:
            s = self.image.shape
            if len(s) == 4:  # multi layer color image
                s = s[1:-1]
            elif len(s) == 3:
                if s[-1] == 3:  # single layer color image
                    s = s[:-1]
                else:  # multi layer grey image
                    s = s[1:]
            layer = np.zeros(shape=s)

        if isColor(layer):
            layer = toGray(layer)

        if color is None:
            # set colour as function of the number of colorItems:
            color = pg.intColor(len(self.cItems)).rgb()

        cItem = ColorLayerItem(layer,
                               imageWidget=self,
                               color=color,
                               alpha=alpha
                               )
        name = incrementName(list(self.cItems.keys()), name)
        self.cItems[name] = cItem
        self.view.addItem(cItem)
        self.sigOverlayAdded.emit(cItem, name, tip)
        return cItem
Exemplo n.º 2
0
    def addColorLayer(self, layer=None, name='Unnamed', tip='', 
                      color=None, alpha=0.5):
        '''
        add a [layer], a np.array (2d or 3d), as colour overlay to the image
        '''
        if layer is None:
            s  = self.image.shape
            if len(s) == 4: # multi layer color image
                s = s[1:-1]
            elif len(s) == 3:
                if s[-1] == 3: # single layer color image
                    s = s[:-1]
                else: #multi layer grey image
                    s = s[1:]
            layer = np.zeros(shape=s)  
        
        if isColor(layer):
            layer = toGray(layer)

        if color is None:
            #set colour as function of the number of colorItems:
            color = pg.intColor(len(self.cItems)).rgb()
        
        cItem = ColorLayerItem(layer,
                               imageWidget=self,
                               color=color,
                               alpha=alpha
                               ) 
        name = incrementName(self.cItems.keys(), name)
        self.cItems[name] = cItem
        self.view.addItem(cItem)
        self.sigOverlayAdded.emit(cItem, name, tip)
        return cItem
Exemplo n.º 3
0
	def __init__(self, origQtGuiClass, *args, **kwargs):
		self.save_only_last_log = True  #means: only the last log event would be
										#saved if not QtRec.save_history
		self.log_childs_inst = {}
		self.log_childs_name = {}
		self._logparent = None
		# take the log-name if given, elsewise use the class name
		name = kwargs.get('logname')
		if name:
			kwargs.pop('logname')
		else:
			name = self.__class__.__name__
		# for logging it's sometimes more usefull to use a instance-parent
		# than given through self.parent()
		p = kwargs.get('logparent')
		if p:
			self._logparent = p
			kwargs.pop('logparent')
		# init base class here after all foreign contents from kwargs are removed
		origQtGuiClass.__init__(self, *args, **kwargs)
		if not p:
			p = self.parent()
		if p:
			while p:
				# find closest parent that is an instance of QtRecBase
				# add this instance as child with an individual name to that
				# parents log-child-list
				#TODO1 invalid widget überspringen - wenn es keinen valid parent gibt: fehlermeldung
				if isinstance(p,QtRecBase):
					name = incrementName(p.log_childs_name.keys(), name)
					p.log_childs_inst[self] = name
					p.log_childs_name[name] = self
					break
				p = p.parent()
		#the top QGuiObject must be a window
		elif self == self.window():
			# add this window to the windows known by QtRec
			QtRec.core._windows.append(self)
		else:
			raise NameError('parent not given')