本文整理汇总了Python中volumina.view3d.volumeRendering.RenderingManager类的典型用法代码示例。如果您正苦于以下问题:Python RenderingManager类的具体用法?Python RenderingManager怎么用?Python RenderingManager使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了RenderingManager类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, parentApplet, topLevelOperatorView):
self.parentApplet = parentApplet
# Tell our base class which slots to monitor
labelSlots = LabelingGui.LabelingSlots()
labelSlots.labelInput = topLevelOperatorView.LabelInputs
labelSlots.labelOutput = topLevelOperatorView.LabelImages
labelSlots.labelEraserValue = topLevelOperatorView.opLabelPipeline.opLabelArray.eraser
labelSlots.labelDelete = topLevelOperatorView.opLabelPipeline.DeleteLabel
labelSlots.labelNames = topLevelOperatorView.LabelNames
labelSlots.labelsAllowed = topLevelOperatorView.LabelsAllowedFlags
self.__cleanup_fns = []
# We provide our own UI file (which adds an extra control for interactive mode)
labelingDrawerUiPath = os.path.split(__file__)[0] + "/labelingDrawer.ui"
# Base class init
super(PixelClassificationGui, self).__init__(
parentApplet, labelSlots, topLevelOperatorView, labelingDrawerUiPath
)
self.topLevelOperatorView = topLevelOperatorView
self.interactiveModeActive = False
# Immediately update our interactive state
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
self._currentlySavingPredictions = False
self.labelingDrawerUi.liveUpdateButton.setEnabled(False)
self.labelingDrawerUi.liveUpdateButton.setIcon(QIcon(ilastikIcons.Play))
self.labelingDrawerUi.liveUpdateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.labelingDrawerUi.liveUpdateButton.toggled.connect(self.toggleInteractive)
self.topLevelOperatorView.LabelNames.notifyDirty(bind(self.handleLabelSelectionChange))
self.__cleanup_fns.append(
partial(self.topLevelOperatorView.LabelNames.unregisterDirty, bind(self.handleLabelSelectionChange))
)
self._initShortcuts()
try:
self.render = True
self._renderedLayers = {} # (layer name, label number)
self._renderMgr = RenderingManager(renderer=self.editor.view3d.qvtk.renderer, qvtk=self.editor.view3d.qvtk)
except:
self.render = False
# toggle interactive mode according to freezePredictions.value
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
def FreezePredDirty():
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
# listen to freezePrediction changes
self.topLevelOperatorView.FreezePredictions.notifyDirty(bind(FreezePredDirty))
self.__cleanup_fns.append(
partial(self.topLevelOperatorView.FreezePredictions.unregisterDirty, bind(FreezePredDirty))
)
示例2: __init__
def __init__(self, topLevelOperatorView, shellRequestSignal, guiControlSignal, predictionSerializer ):
# Tell our base class which slots to monitor
labelSlots = LabelingGui.LabelingSlots()
labelSlots.labelInput = topLevelOperatorView.LabelInputs
labelSlots.labelOutput = topLevelOperatorView.LabelImages
labelSlots.labelEraserValue = topLevelOperatorView.opLabelPipeline.opLabelArray.eraser
labelSlots.labelDelete = topLevelOperatorView.opLabelPipeline.opLabelArray.deleteLabel
labelSlots.maxLabelValue = topLevelOperatorView.MaxLabelValue
labelSlots.labelsAllowed = topLevelOperatorView.LabelsAllowedFlags
# We provide our own UI file (which adds an extra control for interactive mode)
labelingDrawerUiPath = os.path.split(__file__)[0] + '/labelingDrawer.ui'
# Base class init
super(Counting3dGui, self).__init__( labelSlots, topLevelOperatorView, labelingDrawerUiPath )
self.op = topLevelOperatorView
#self.clickReporter.rightClickReceived.connect( self._handleEditorRightClick )
self.topLevelOperatorView = topLevelOperatorView
self.shellRequestSignal = shellRequestSignal
self.guiControlSignal = guiControlSignal
self.predictionSerializer = predictionSerializer
self.interactiveModeActive = False
self._currentlySavingPredictions = False
self.labelingDrawerUi.savePredictionsButton.clicked.connect(self.onSavePredictionsButtonClicked)
self.labelingDrawerUi.savePredictionsButton.setIcon( QIcon(ilastikIcons.Save) )
self.labelingDrawerUi.liveUpdateButton.setEnabled(False)
self.labelingDrawerUi.liveUpdateButton.setIcon( QIcon(ilastikIcons.Play) )
self.labelingDrawerUi.liveUpdateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.labelingDrawerUi.liveUpdateButton.toggled.connect( self.toggleInteractive )
self.topLevelOperatorView.MaxLabelValue.notifyDirty( bind(self.handleLabelSelectionChange) )
self._initShortcuts()
try:
self.render = True
self._renderedLayers = {} # (layer name, label number)
self._renderMgr = RenderingManager(
renderer=self.editor.view3d.qvtk.renderer,
qvtk=self.editor.view3d.qvtk)
except:
self.render = False
self.initCounting()
示例3: __init__
def __init__(self, topLevelOperatorView):
"""
"""
with Tracer(traceLogger):
self.topLevelOperatorView = topLevelOperatorView
super(GraphCutsGui, self).__init__(self.topLevelOperatorView)
# Tell our base class which slots to monitor
labelSlots = LabelingGui.LabelingSlots()
labelSlots.labelInput = topLevelOperatorView.LabelInputs
labelSlots.labelOutput = topLevelOperatorView.LabelImages
labelSlots.labelEraserValue = topLevelOperatorView.opLabelPipeline.opLabelArray.eraser
labelSlots.labelDelete = topLevelOperatorView.opLabelPipeline.opLabelArray.deleteLabel
# Base class init
super(GraphCutsGui, self).__init__( labelSlots, topLevelOperatorView, labelingDrawerUiPath )
self.topLevelOperatorView = topLevelOperatorView
self.interactiveModeActive = False
self._currentlySavingPredictions = False
self.labelingDrawerUi.savePredictionsButton.clicked.connect(self.onSavePredictionsButtonClicked)
self.labelingDrawerUi.savePredictionsButton.setIcon( QIcon(ilastikIcons.Save) )
self.labelingDrawerUi.liveUpdateButton.setEnabled(False)
self.labelingDrawerUi.liveUpdateButton.setIcon( QIcon(ilastikIcons.Play) )
self.labelingDrawerUi.liveUpdateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.labelingDrawerUi.liveUpdateButton.toggled.connect( self.toggleInteractive )
self.topLevelOperatorView.MaxLabelValue.notifyDirty( bind(self.handleLabelSelectionChange) )
self._initShortcuts()
try:
self.render = True
self._renderedLayers = {} # (layer name, label number)
self._renderMgr = RenderingManager(
renderer=self.editor.view3d.qvtk.renderer,
qvtk=self.editor.view3d.qvtk)
except:
self.render = False
示例4: __init__
def __init__(self, parentApplet, topLevelOperatorView, drawerUiPath=None ):
self.topLevelOperatorView = topLevelOperatorView
#members
self._doneSegmentationLayer = None
self._showSegmentationIn3D = False
self._showUncertaintyLayer = False
#end: members
labelingSlots = LabelingGui.LabelingSlots()
labelingSlots.labelInput = topLevelOperatorView.WriteSeeds
labelingSlots.labelOutput = topLevelOperatorView.opLabelArray.Output
labelingSlots.labelEraserValue = topLevelOperatorView.opLabelArray.EraserLabelValue
labelingSlots.labelNames = topLevelOperatorView.LabelNames
labelingSlots.labelDelete = topLevelOperatorView.opLabelArray.DeleteLabel
labelingSlots.maxLabelValue = topLevelOperatorView.opLabelArray.MaxLabelValue
labelingSlots.labelsAllowed = topLevelOperatorView.LabelsAllowed
# We provide our own UI file (which adds an extra control for interactive mode)
directory = os.path.split(__file__)[0]
if drawerUiPath is None:
drawerUiPath = os.path.join(directory, 'carvingDrawer.ui')
self.dialogdirCOM = os.path.join(directory, 'carvingObjectManagement.ui')
self.dialogdirSAD = os.path.join(directory, 'saveAsDialog.ui')
rawInputSlot = topLevelOperatorView.RawData
super(CarvingGui, self).__init__(parentApplet, labelingSlots, topLevelOperatorView, drawerUiPath, rawInputSlot)
self.labelingDrawerUi.currentObjectLabel.setText("<not saved yet>")
# Init special base class members
self.minLabelNumber = 2
self.maxLabelNumber = 2
mgr = ShortcutManager()
ActionInfo = ShortcutManager.ActionInfo
#set up keyboard shortcuts
mgr.register( "3", ActionInfo( "Carving",
"Run interactive segmentation",
"Run interactive segmentation",
self.labelingDrawerUi.segment.click,
self.labelingDrawerUi.segment,
self.labelingDrawerUi.segment ) )
try:
self.render = True
self._shownObjects3D = {}
self._renderMgr = RenderingManager(
renderer=self.editor.view3d.qvtk.renderer,
qvtk=self.editor.view3d.qvtk)
except:
self.render = False
# Segmentation is toggled on by default in _after_init, below.
# (We can't enable it until the layers are all present.)
self._showSegmentationIn3D = False
self._segmentation_3d_label = None
self.labelingDrawerUi.segment.clicked.connect(self.onSegmentButton)
self.labelingDrawerUi.segment.setEnabled(True)
self.topLevelOperatorView.Segmentation.notifyDirty( bind( self._update_rendering ) )
self.topLevelOperatorView.HasSegmentation.notifyValueChanged( bind( self._updateGui ) )
## uncertainty
self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(False)
self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(False)
def onUncertaintyFGButton():
logger.debug( "uncertFG button clicked" )
pos = self.topLevelOperatorView.getMaxUncertaintyPos(label=2)
self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
self.labelingDrawerUi.pushButtonUncertaintyFG.clicked.connect(onUncertaintyFGButton)
def onUncertaintyBGButton():
logger.debug( "uncertBG button clicked" )
pos = self.topLevelOperatorView.getMaxUncertaintyPos(label=1)
self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
self.labelingDrawerUi.pushButtonUncertaintyBG.clicked.connect(onUncertaintyBGButton)
def onUncertaintyCombo(value):
if value == 0:
value = "none"
self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(False)
self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(False)
self._showUncertaintyLayer = False
else:
if value == 1:
value = "localMargin"
elif value == 2:
value = "exchangeCount"
elif value == 3:
value = "gabow"
else:
raise RuntimeError("unhandled case '%r'" % value)
self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(True)
self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(True)
self._showUncertaintyLayer = True
#.........这里部分代码省略.........
示例5: Counting3dGui
class Counting3dGui(LabelingGui):
###########################################
### AppletGuiInterface Concrete Methods ###
###########################################
def centralWidget( self ):
return self
def reset(self):
# Base class first
super(Counting3dGui, self).reset()
# Ensure that we are NOT in interactive mode
self.labelingDrawerUi.liveUpdateButton.setChecked(False)
self._viewerControlUi.checkShowPredictions.setChecked(False)
self._viewerControlUi.checkShowSegmentation.setChecked(False)
self.toggleInteractive(False)
def viewerControlWidget(self):
return self._viewerControlUi
###########################################
###########################################
@traceLogged(traceLogger)
def __init__(self, topLevelOperatorView, shellRequestSignal, guiControlSignal, predictionSerializer ):
# Tell our base class which slots to monitor
labelSlots = LabelingGui.LabelingSlots()
labelSlots.labelInput = topLevelOperatorView.LabelInputs
labelSlots.labelOutput = topLevelOperatorView.LabelImages
labelSlots.labelEraserValue = topLevelOperatorView.opLabelPipeline.opLabelArray.eraser
labelSlots.labelDelete = topLevelOperatorView.opLabelPipeline.opLabelArray.deleteLabel
labelSlots.maxLabelValue = topLevelOperatorView.MaxLabelValue
labelSlots.labelsAllowed = topLevelOperatorView.LabelsAllowedFlags
# We provide our own UI file (which adds an extra control for interactive mode)
labelingDrawerUiPath = os.path.split(__file__)[0] + '/labelingDrawer.ui'
# Base class init
super(Counting3dGui, self).__init__( labelSlots, topLevelOperatorView, labelingDrawerUiPath )
self.op = topLevelOperatorView
#self.clickReporter.rightClickReceived.connect( self._handleEditorRightClick )
self.topLevelOperatorView = topLevelOperatorView
self.shellRequestSignal = shellRequestSignal
self.guiControlSignal = guiControlSignal
self.predictionSerializer = predictionSerializer
self.interactiveModeActive = False
self._currentlySavingPredictions = False
self.labelingDrawerUi.savePredictionsButton.clicked.connect(self.onSavePredictionsButtonClicked)
self.labelingDrawerUi.savePredictionsButton.setIcon( QIcon(ilastikIcons.Save) )
self.labelingDrawerUi.liveUpdateButton.setEnabled(False)
self.labelingDrawerUi.liveUpdateButton.setIcon( QIcon(ilastikIcons.Play) )
self.labelingDrawerUi.liveUpdateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.labelingDrawerUi.liveUpdateButton.toggled.connect( self.toggleInteractive )
self.topLevelOperatorView.MaxLabelValue.notifyDirty( bind(self.handleLabelSelectionChange) )
self._initShortcuts()
try:
self.render = True
self._renderedLayers = {} # (layer name, label number)
self._renderMgr = RenderingManager(
renderer=self.editor.view3d.qvtk.renderer,
qvtk=self.editor.view3d.qvtk)
except:
self.render = False
self.initCounting()
def initCounting(self):
self._addNewLabel()
self._addNewLabel()
self.labelingDrawerUi.SigmaLine.setText("1")
self.labelingDrawerUi.UnderBox.setRange(0,1000000)
self.labelingDrawerUi.UnderBox.setValue(1)
self.labelingDrawerUi.OverBox.setRange(0,1000000)
self.labelingDrawerUi.OverBox.setValue(1)
self.labelingDrawerUi.UnderBox.setKeyboardTracking(False)
self.labelingDrawerUi.OverBox.setKeyboardTracking(False)
self.labelingDrawerUi.EpsilonBox.setKeyboardTracking(False)
self.labelingDrawerUi.EpsilonBox.setDecimals(6)
for option in self.op.options:
print "option", option
self.labelingDrawerUi.SVROptions.addItem('+'.join(option.values()), (option,))
self.labelingDrawerUi.DebugButton.pressed.connect(self._debug)
#self.labelingDrawerUi.TrainButton.pressed.connect(self._train)
#self.labelingDrawerUi.PredictionButton.pressed.connect(self.updateDensitySum)
self.labelingDrawerUi.SVROptions.currentIndexChanged.connect(self._updateSVROptions)
self._updateSVROptions()
self.labelingDrawerUi.OverBox.valueChanged.connect(self._updateOverMult)
self.labelingDrawerUi.UnderBox.valueChanged.connect(self._updateUnderMult)
#.........这里部分代码省略.........
示例6: __init__
def __init__(self, parentApplet, topLevelOperatorView, labelingDrawerUiPath=None ):
self.parentApplet = parentApplet
# Tell our base class which slots to monitor
labelSlots = LabelingGui.LabelingSlots()
labelSlots.labelInput = topLevelOperatorView.LabelInputs
labelSlots.labelOutput = topLevelOperatorView.LabelImages
labelSlots.labelEraserValue = topLevelOperatorView.opLabelPipeline.opLabelArray.eraser
labelSlots.labelDelete = topLevelOperatorView.opLabelPipeline.DeleteLabel
labelSlots.labelNames = topLevelOperatorView.LabelNames
self.__cleanup_fns = []
# We provide our own UI file (which adds an extra control for interactive mode)
if labelingDrawerUiPath is None:
labelingDrawerUiPath = os.path.split(__file__)[0] + '/labelingDrawer.ui'
# Base class init
super(PixelClassificationGui, self).__init__( parentApplet, labelSlots, topLevelOperatorView, labelingDrawerUiPath )
self.topLevelOperatorView = topLevelOperatorView
self.interactiveModeActive = False
# Immediately update our interactive state
self.toggleInteractive( not self.topLevelOperatorView.FreezePredictions.value )
self._currentlySavingPredictions = False
self.labelingDrawerUi.labelListView.support_merges = True
self.labelingDrawerUi.liveUpdateButton.setEnabled(False)
self.labelingDrawerUi.liveUpdateButton.setIcon( QIcon(ilastikIcons.Play) )
self.labelingDrawerUi.liveUpdateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.labelingDrawerUi.liveUpdateButton.toggled.connect( self.toggleInteractive )
self.initFeatSelDlg()
self.labelingDrawerUi.suggestFeaturesButton.clicked.connect(self.show_feature_selection_dialog)
self.featSelDlg.accepted.connect(self.update_features_from_dialog)
self.labelingDrawerUi.suggestFeaturesButton.setEnabled(False)
self.topLevelOperatorView.LabelNames.notifyDirty( bind(self.handleLabelSelectionChange) )
self.__cleanup_fns.append( partial( self.topLevelOperatorView.LabelNames.unregisterDirty, bind(self.handleLabelSelectionChange) ) )
self._initShortcuts()
self._bookmarks_window = BookmarksWindow(self, self.topLevelOperatorView)
# FIXME: We MUST NOT enable the render manager by default,
# since it will drastically slow down the app for large volumes.
# For now, we leave it off by default.
# To re-enable rendering, we need to allow the user to render a segmentation
# and then initialize the render manager on-the-fly.
# (We might want to warn the user if her volume is not small.)
self.render = False
self._renderMgr = None
self._renderedLayers = {} # (layer name, label number)
# Always off for now (see note above)
if self.render:
try:
self._renderMgr = RenderingManager( self.editor.view3d )
except:
self.render = False
# toggle interactive mode according to freezePredictions.value
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
def FreezePredDirty():
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
# listen to freezePrediction changes
self.topLevelOperatorView.FreezePredictions.notifyDirty( bind(FreezePredDirty) )
self.__cleanup_fns.append( partial( self.topLevelOperatorView.FreezePredictions.unregisterDirty, bind(FreezePredDirty) ) )
示例7: PixelClassificationGui
#.........这里部分代码省略.........
self.labelingDrawerUi.labelListView.support_merges = True
self.labelingDrawerUi.liveUpdateButton.setEnabled(False)
self.labelingDrawerUi.liveUpdateButton.setIcon( QIcon(ilastikIcons.Play) )
self.labelingDrawerUi.liveUpdateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.labelingDrawerUi.liveUpdateButton.toggled.connect( self.toggleInteractive )
self.initFeatSelDlg()
self.labelingDrawerUi.suggestFeaturesButton.clicked.connect(self.show_feature_selection_dialog)
self.featSelDlg.accepted.connect(self.update_features_from_dialog)
self.labelingDrawerUi.suggestFeaturesButton.setEnabled(False)
self.topLevelOperatorView.LabelNames.notifyDirty( bind(self.handleLabelSelectionChange) )
self.__cleanup_fns.append( partial( self.topLevelOperatorView.LabelNames.unregisterDirty, bind(self.handleLabelSelectionChange) ) )
self._initShortcuts()
self._bookmarks_window = BookmarksWindow(self, self.topLevelOperatorView)
# FIXME: We MUST NOT enable the render manager by default,
# since it will drastically slow down the app for large volumes.
# For now, we leave it off by default.
# To re-enable rendering, we need to allow the user to render a segmentation
# and then initialize the render manager on-the-fly.
# (We might want to warn the user if her volume is not small.)
self.render = False
self._renderMgr = None
self._renderedLayers = {} # (layer name, label number)
# Always off for now (see note above)
if self.render:
try:
self._renderMgr = RenderingManager( self.editor.view3d )
except:
self.render = False
# toggle interactive mode according to freezePredictions.value
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
def FreezePredDirty():
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
# listen to freezePrediction changes
self.topLevelOperatorView.FreezePredictions.notifyDirty( bind(FreezePredDirty) )
self.__cleanup_fns.append( partial( self.topLevelOperatorView.FreezePredictions.unregisterDirty, bind(FreezePredDirty) ) )
def initFeatSelDlg(self):
if self.topLevelOperatorView.name=="OpPixelClassification":
thisOpFeatureSelection = self.topLevelOperatorView.parent.featureSelectionApplet.topLevelOperator.innerOperators[0]
elif self.topLevelOperatorView.name=="OpPixelClassification0":
thisOpFeatureSelection = self.topLevelOperatorView.parent.featureSelectionApplets[0].topLevelOperator.innerOperators[0]
elif self.topLevelOperatorView.name=="OpPixelClassification1":
thisOpFeatureSelection = self.topLevelOperatorView.parent.featureSelectionApplets[1].topLevelOperator.innerOperators[0]
elif self.topLevelOperatorView.name=="OpPixelClassification2":
thisOpFeatureSelection = self.topLevelOperatorView.parent.featureSelectionApplets[2].topLevelOperator.innerOperators[0]
elif self.topLevelOperatorView.name=="OpPixelClassification3":
thisOpFeatureSelection = self.topLevelOperatorView.parent.featureSelectionApplets[3].topLevelOperator.innerOperators[0]
else:
raise NotImplementedError
self.featSelDlg = FeatureSelectionDialog(thisOpFeatureSelection, self.topLevelOperatorView)
def show_feature_selection_dialog(self):
self.featSelDlg.exec_()
def update_features_from_dialog(self):
示例8: __init__
def __init__(self, labelingSlots, topLevelOperatorView, drawerUiPath=None, rawInputSlot=None ):
self.topLevelOperatorView = topLevelOperatorView
# We provide our own UI file (which adds an extra control for interactive mode)
directory = os.path.split(__file__)[0]
carvingDrawerUiPath = os.path.join(directory, 'carvingDrawer.ui')
super(CarvingGui, self).__init__(labelingSlots, topLevelOperatorView, carvingDrawerUiPath, rawInputSlot)
mgr = ShortcutManager()
#set up keyboard shortcuts
segmentShortcut = QShortcut(QKeySequence("3"), self, member=self.labelingDrawerUi.segment.click,
ambiguousMember=self.labelingDrawerUi.segment.click)
mgr.register("Carving", "Run interactive segmentation", segmentShortcut, self.labelingDrawerUi.segment)
self._doneSegmentationLayer = None
#volume rendering
try:
self.render = True
self._shownObjects3D = {}
self._renderMgr = RenderingManager(
renderer=self.editor.view3d.qvtk.renderer,
qvtk=self.editor.view3d.qvtk)
except:
self.render = False
def onSegmentButton():
print "segment button clicked"
self.topLevelOperatorView.opCarving.Trigger.setDirty(slice(None))
self.labelingDrawerUi.segment.clicked.connect(onSegmentButton)
self.labelingDrawerUi.segment.setEnabled(True)
def onUncertaintyFGButton():
print "uncertFG button clicked"
pos = self.topLevelOperatorView.opCarving.getMaxUncertaintyPos(label=2)
self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
self.labelingDrawerUi.pushButtonUncertaintyFG.clicked.connect(onUncertaintyFGButton)
self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(True)
def onUncertaintyBGButton():
print "uncertBG button clicked"
pos = self.topLevelOperatorView.opCarving.getMaxUncertaintyPos(label=1)
self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
self.labelingDrawerUi.pushButtonUncertaintyBG.clicked.connect(onUncertaintyBGButton)
self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(True)
def onBackgroundPrioritySpin(value):
print "background priority changed to %f" % value
self.topLevelOperatorView.opCarving.BackgroundPriority.setValue(value)
self.labelingDrawerUi.backgroundPrioritySpin.valueChanged.connect(onBackgroundPrioritySpin)
def onuncertaintyCombo(value):
if value == 0:
value = "none"
if value == 1:
value = "localMargin"
if value == 2:
value = "exchangeCount"
if value == 3:
value = "gabow"
print "uncertainty changed to %r" % value
self.topLevelOperatorView.opCarving.UncertaintyType.setValue(value)
self.labelingDrawerUi.uncertaintyCombo.currentIndexChanged.connect(onuncertaintyCombo)
def onBackgroundPriorityDirty(slot, roi):
oldValue = self.labelingDrawerUi.backgroundPrioritySpin.value()
newValue = self.topLevelOperatorView.opCarving.BackgroundPriority.value
if newValue != oldValue:
self.labelingDrawerUi.backgroundPrioritySpin.setValue(newValue)
self.topLevelOperatorView.opCarving.BackgroundPriority.notifyDirty(onBackgroundPriorityDirty)
def onNoBiasBelowDirty(slot, roi):
oldValue = self.labelingDrawerUi.noBiasBelowSpin.value()
newValue = self.topLevelOperatorView.opCarving.NoBiasBelow.value
if newValue != oldValue:
self.labelingDrawerUi.noBiasBelowSpin.setValue(newValue)
self.topLevelOperatorView.opCarving.NoBiasBelow.notifyDirty(onNoBiasBelowDirty)
def onNoBiasBelowSpin(value):
print "background priority changed to %f" % value
self.topLevelOperatorView.opCarving.NoBiasBelow.setValue(value)
self.labelingDrawerUi.noBiasBelowSpin.valueChanged.connect(onNoBiasBelowSpin)
def onSaveAsButton():
print "save object as?"
if self.topLevelOperatorView.opCarving.dataIsStorable():
name, ok = QInputDialog.getText(self, 'Save Object As', 'object name')
name = str(name)
if not ok:
return
objects = self.topLevelOperatorView.opCarving.AllObjectNames[:].wait()
if name in objects:
QMessageBox.critical(self, "Save Object As", "An object with name '%s' already exists.\nPlease choose a different name." % name)
return
self.topLevelOperatorView.opCarving.saveObjectAs(name)
print "save object as %s" % name
#.........这里部分代码省略.........
示例9: CarvingGui
class CarvingGui(LabelingGui):
def __init__(self, labelingSlots, topLevelOperatorView, drawerUiPath=None, rawInputSlot=None ):
self.topLevelOperatorView = topLevelOperatorView
# We provide our own UI file (which adds an extra control for interactive mode)
directory = os.path.split(__file__)[0]
carvingDrawerUiPath = os.path.join(directory, 'carvingDrawer.ui')
super(CarvingGui, self).__init__(labelingSlots, topLevelOperatorView, carvingDrawerUiPath, rawInputSlot)
mgr = ShortcutManager()
#set up keyboard shortcuts
segmentShortcut = QShortcut(QKeySequence("3"), self, member=self.labelingDrawerUi.segment.click,
ambiguousMember=self.labelingDrawerUi.segment.click)
mgr.register("Carving", "Run interactive segmentation", segmentShortcut, self.labelingDrawerUi.segment)
self._doneSegmentationLayer = None
#volume rendering
try:
self.render = True
self._shownObjects3D = {}
self._renderMgr = RenderingManager(
renderer=self.editor.view3d.qvtk.renderer,
qvtk=self.editor.view3d.qvtk)
except:
self.render = False
def onSegmentButton():
print "segment button clicked"
self.topLevelOperatorView.opCarving.Trigger.setDirty(slice(None))
self.labelingDrawerUi.segment.clicked.connect(onSegmentButton)
self.labelingDrawerUi.segment.setEnabled(True)
def onUncertaintyFGButton():
print "uncertFG button clicked"
pos = self.topLevelOperatorView.opCarving.getMaxUncertaintyPos(label=2)
self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
self.labelingDrawerUi.pushButtonUncertaintyFG.clicked.connect(onUncertaintyFGButton)
self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(True)
def onUncertaintyBGButton():
print "uncertBG button clicked"
pos = self.topLevelOperatorView.opCarving.getMaxUncertaintyPos(label=1)
self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
self.labelingDrawerUi.pushButtonUncertaintyBG.clicked.connect(onUncertaintyBGButton)
self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(True)
def onBackgroundPrioritySpin(value):
print "background priority changed to %f" % value
self.topLevelOperatorView.opCarving.BackgroundPriority.setValue(value)
self.labelingDrawerUi.backgroundPrioritySpin.valueChanged.connect(onBackgroundPrioritySpin)
def onuncertaintyCombo(value):
if value == 0:
value = "none"
if value == 1:
value = "localMargin"
if value == 2:
value = "exchangeCount"
if value == 3:
value = "gabow"
print "uncertainty changed to %r" % value
self.topLevelOperatorView.opCarving.UncertaintyType.setValue(value)
self.labelingDrawerUi.uncertaintyCombo.currentIndexChanged.connect(onuncertaintyCombo)
def onBackgroundPriorityDirty(slot, roi):
oldValue = self.labelingDrawerUi.backgroundPrioritySpin.value()
newValue = self.topLevelOperatorView.opCarving.BackgroundPriority.value
if newValue != oldValue:
self.labelingDrawerUi.backgroundPrioritySpin.setValue(newValue)
self.topLevelOperatorView.opCarving.BackgroundPriority.notifyDirty(onBackgroundPriorityDirty)
def onNoBiasBelowDirty(slot, roi):
oldValue = self.labelingDrawerUi.noBiasBelowSpin.value()
newValue = self.topLevelOperatorView.opCarving.NoBiasBelow.value
if newValue != oldValue:
self.labelingDrawerUi.noBiasBelowSpin.setValue(newValue)
self.topLevelOperatorView.opCarving.NoBiasBelow.notifyDirty(onNoBiasBelowDirty)
def onNoBiasBelowSpin(value):
print "background priority changed to %f" % value
self.topLevelOperatorView.opCarving.NoBiasBelow.setValue(value)
self.labelingDrawerUi.noBiasBelowSpin.valueChanged.connect(onNoBiasBelowSpin)
def onSaveAsButton():
print "save object as?"
if self.topLevelOperatorView.opCarving.dataIsStorable():
name, ok = QInputDialog.getText(self, 'Save Object As', 'object name')
name = str(name)
if not ok:
return
objects = self.topLevelOperatorView.opCarving.AllObjectNames[:].wait()
if name in objects:
QMessageBox.critical(self, "Save Object As", "An object with name '%s' already exists.\nPlease choose a different name." % name)
return
self.topLevelOperatorView.opCarving.saveObjectAs(name)
#.........这里部分代码省略.........
示例10: __init__
def __init__(self, parentApplet, topLevelOperatorView, drawerUiPath=None ):
self.topLevelOperatorView = topLevelOperatorView
#members
self._doneSegmentationLayer = None
self._showSegmentationIn3D = False
#self._showUncertaintyLayer = False
#end: members
labelingSlots = LabelingGui.LabelingSlots()
labelingSlots.labelInput = topLevelOperatorView.WriteSeeds
labelingSlots.labelOutput = topLevelOperatorView.opLabelArray.Output
labelingSlots.labelEraserValue = topLevelOperatorView.opLabelArray.EraserLabelValue
labelingSlots.labelNames = topLevelOperatorView.LabelNames
labelingSlots.labelDelete = topLevelOperatorView.opLabelArray.DeleteLabel
labelingSlots.maxLabelValue = topLevelOperatorView.opLabelArray.MaxLabelValue
# We provide our own UI file (which adds an extra control for interactive mode)
directory = os.path.split(__file__)[0]
if drawerUiPath is None:
drawerUiPath = os.path.join(directory, 'carvingDrawer.ui')
self.dialogdirCOM = os.path.join(directory, 'carvingObjectManagement.ui')
self.dialogdirSAD = os.path.join(directory, 'saveAsDialog.ui')
super(CarvingGui, self).__init__(parentApplet, labelingSlots, topLevelOperatorView, drawerUiPath)
self.labelingDrawerUi.currentObjectLabel.setText("<not saved yet>")
# Init special base class members
self.minLabelNumber = 2
self.maxLabelNumber = 2
mgr = ShortcutManager()
ActionInfo = ShortcutManager.ActionInfo
#set up keyboard shortcuts
mgr.register( "3", ActionInfo( "Carving",
"Run interactive segmentation",
"Run interactive segmentation",
self.labelingDrawerUi.segment.click,
self.labelingDrawerUi.segment,
self.labelingDrawerUi.segment ) )
# Disable 3D view by default
self.render = False
tagged_shape = defaultdict(lambda: 1)
tagged_shape.update( topLevelOperatorView.InputData.meta.getTaggedShape() )
is_3d = (tagged_shape['x'] > 1 and tagged_shape['y'] > 1 and tagged_shape['z'] > 1)
if is_3d:
try:
self._renderMgr = RenderingManager( self.editor.view3d )
self._shownObjects3D = {}
self.render = True
except:
self.render = False
# Segmentation is toggled on by default in _after_init, below.
# (We can't enable it until the layers are all present.)
self._showSegmentationIn3D = False
self._segmentation_3d_label = None
self.labelingDrawerUi.segment.clicked.connect(self.onSegmentButton)
self.labelingDrawerUi.segment.setEnabled(True)
self.topLevelOperatorView.Segmentation.notifyDirty( bind( self._update_rendering ) )
self.topLevelOperatorView.HasSegmentation.notifyValueChanged( bind( self._updateGui ) )
## uncertainty
#self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(False)
#self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(False)
#def onUncertaintyFGButton():
# logger.debug( "uncertFG button clicked" )
# pos = self.topLevelOperatorView.getMaxUncertaintyPos(label=2)
# self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
#self.labelingDrawerUi.pushButtonUncertaintyFG.clicked.connect(onUncertaintyFGButton)
#def onUncertaintyBGButton():
# logger.debug( "uncertBG button clicked" )
# pos = self.topLevelOperatorView.getMaxUncertaintyPos(label=1)
# self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
#self.labelingDrawerUi.pushButtonUncertaintyBG.clicked.connect(onUncertaintyBGButton)
#def onUncertaintyCombo(value):
# if value == 0:
# value = "none"
# self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(False)
# self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(False)
# self._showUncertaintyLayer = False
# else:
# if value == 1:
# value = "localMargin"
# elif value == 2:
# value = "exchangeCount"
# elif value == 3:
# value = "gabow"
# else:
#.........这里部分代码省略.........
示例11: CarvingGui
class CarvingGui(LabelingGui):
def __init__(self, parentApplet, topLevelOperatorView, drawerUiPath=None ):
self.topLevelOperatorView = topLevelOperatorView
#members
self._doneSegmentationLayer = None
self._showSegmentationIn3D = False
#self._showUncertaintyLayer = False
#end: members
labelingSlots = LabelingGui.LabelingSlots()
labelingSlots.labelInput = topLevelOperatorView.WriteSeeds
labelingSlots.labelOutput = topLevelOperatorView.opLabelArray.Output
labelingSlots.labelEraserValue = topLevelOperatorView.opLabelArray.EraserLabelValue
labelingSlots.labelNames = topLevelOperatorView.LabelNames
labelingSlots.labelDelete = topLevelOperatorView.opLabelArray.DeleteLabel
labelingSlots.maxLabelValue = topLevelOperatorView.opLabelArray.MaxLabelValue
# We provide our own UI file (which adds an extra control for interactive mode)
directory = os.path.split(__file__)[0]
if drawerUiPath is None:
drawerUiPath = os.path.join(directory, 'carvingDrawer.ui')
self.dialogdirCOM = os.path.join(directory, 'carvingObjectManagement.ui')
self.dialogdirSAD = os.path.join(directory, 'saveAsDialog.ui')
super(CarvingGui, self).__init__(parentApplet, labelingSlots, topLevelOperatorView, drawerUiPath)
self.labelingDrawerUi.currentObjectLabel.setText("<not saved yet>")
# Init special base class members
self.minLabelNumber = 2
self.maxLabelNumber = 2
mgr = ShortcutManager()
ActionInfo = ShortcutManager.ActionInfo
#set up keyboard shortcuts
mgr.register( "3", ActionInfo( "Carving",
"Run interactive segmentation",
"Run interactive segmentation",
self.labelingDrawerUi.segment.click,
self.labelingDrawerUi.segment,
self.labelingDrawerUi.segment ) )
# Disable 3D view by default
self.render = False
tagged_shape = defaultdict(lambda: 1)
tagged_shape.update( topLevelOperatorView.InputData.meta.getTaggedShape() )
is_3d = (tagged_shape['x'] > 1 and tagged_shape['y'] > 1 and tagged_shape['z'] > 1)
if is_3d:
try:
self._renderMgr = RenderingManager( self.editor.view3d )
self._shownObjects3D = {}
self.render = True
except:
self.render = False
# Segmentation is toggled on by default in _after_init, below.
# (We can't enable it until the layers are all present.)
self._showSegmentationIn3D = False
self._segmentation_3d_label = None
self.labelingDrawerUi.segment.clicked.connect(self.onSegmentButton)
self.labelingDrawerUi.segment.setEnabled(True)
self.topLevelOperatorView.Segmentation.notifyDirty( bind( self._update_rendering ) )
self.topLevelOperatorView.HasSegmentation.notifyValueChanged( bind( self._updateGui ) )
## uncertainty
#self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(False)
#self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(False)
#def onUncertaintyFGButton():
# logger.debug( "uncertFG button clicked" )
# pos = self.topLevelOperatorView.getMaxUncertaintyPos(label=2)
# self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
#self.labelingDrawerUi.pushButtonUncertaintyFG.clicked.connect(onUncertaintyFGButton)
#def onUncertaintyBGButton():
# logger.debug( "uncertBG button clicked" )
# pos = self.topLevelOperatorView.getMaxUncertaintyPos(label=1)
# self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
#self.labelingDrawerUi.pushButtonUncertaintyBG.clicked.connect(onUncertaintyBGButton)
#def onUncertaintyCombo(value):
# if value == 0:
# value = "none"
# self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(False)
# self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(False)
# self._showUncertaintyLayer = False
# else:
# if value == 1:
# value = "localMargin"
# elif value == 2:
# value = "exchangeCount"
# elif value == 3:
# value = "gabow"
#.........这里部分代码省略.........
示例12: GraphCutsGui
class GraphCutsGui(LabelingGui):
"""
"""
###########################################
### AppletGuiInterface Concrete Methods ###
###########################################
def appletDrawer(self):
return self.getAppletDrawerUi()
def viewerControlWidget(self):
return self._viewerControlUi
###########################################
###########################################
@traceLogged(traceLogger)
def __init__(self, topLevelOperatorView):
"""
"""
with Tracer(traceLogger):
self.topLevelOperatorView = topLevelOperatorView
super(GraphCutsGui, self).__init__(self.topLevelOperatorView)
# Tell our base class which slots to monitor
labelSlots = LabelingGui.LabelingSlots()
labelSlots.labelInput = topLevelOperatorView.LabelInputs
labelSlots.labelOutput = topLevelOperatorView.LabelImages
labelSlots.labelEraserValue = topLevelOperatorView.opLabelPipeline.opLabelArray.eraser
labelSlots.labelDelete = topLevelOperatorView.opLabelPipeline.opLabelArray.deleteLabel
# Base class init
super(GraphCutsGui, self).__init__( labelSlots, topLevelOperatorView, labelingDrawerUiPath )
self.topLevelOperatorView = topLevelOperatorView
self.interactiveModeActive = False
self._currentlySavingPredictions = False
self.labelingDrawerUi.savePredictionsButton.clicked.connect(self.onSavePredictionsButtonClicked)
self.labelingDrawerUi.savePredictionsButton.setIcon( QIcon(ilastikIcons.Save) )
self.labelingDrawerUi.liveUpdateButton.setEnabled(False)
self.labelingDrawerUi.liveUpdateButton.setIcon( QIcon(ilastikIcons.Play) )
self.labelingDrawerUi.liveUpdateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.labelingDrawerUi.liveUpdateButton.toggled.connect( self.toggleInteractive )
self.topLevelOperatorView.MaxLabelValue.notifyDirty( bind(self.handleLabelSelectionChange) )
self._initShortcuts()
try:
self.render = True
self._renderedLayers = {} # (layer name, label number)
self._renderMgr = RenderingManager(
renderer=self.editor.view3d.qvtk.renderer,
qvtk=self.editor.view3d.qvtk)
except:
self.render = False
def initAppletDrawerUi(self):
with Tracer(traceLogger):
# Load the ui file (find it in our own directory)
localDir = os.path.split(__file__)[0]
self._drawer = uic.loadUi(localDir+"/drawer.ui")
layout = QVBoxLayout()
layout.setSpacing(0)
self._drawer.setLayout( layout )
thresholdWidget = ThresholdingWidget(self)
thresholdWidget.valueChanged.connect( self.handleThresholdGuiValuesChanged )
self._drawer.layout().addWidget( thresholdWidget )
self._drawer.layout().addSpacerItem( QSpacerItem(0,0,vPolicy=QSizePolicy.Expanding) )
def updateDrawerFromOperator():
minValue, maxValue = (0,255)
if self.topLevelOperatorView.MinValue.ready():
minValue = self.topLevelOperatorView.MinValue.value
if self.topLevelOperatorView.MaxValue.ready():
maxValue = self.topLevelOperatorView.MaxValue.value
thresholdWidget.setValue(minValue, maxValue)
self.topLevelOperatorView.MinValue.notifyDirty( bind(updateDrawerFromOperator) )
self.topLevelOperatorView.MaxValue.notifyDirty( bind(updateDrawerFromOperator) )
updateDrawerFromOperator()
@traceLogged(traceLogger)
def initViewerControlUi(self):
localDir = os.path.split(__file__)[0]
self._viewerControlUi = uic.loadUi( os.path.join( localDir, "viewerControls.ui" ) )
# Connect checkboxes
def nextCheckState(checkbox):
checkbox.setChecked( not checkbox.isChecked() )
self._viewerControlUi.checkShowPredictions.nextCheckState = partial(nextCheckState, self._viewerControlUi.checkShowPredictions)
#.........这里部分代码省略.........
示例13: CarvingGui
class CarvingGui(LabelingGui):
def __init__(self, parentApplet, topLevelOperatorView, drawerUiPath=None ):
self.topLevelOperatorView = topLevelOperatorView
#members
self._doneSegmentationLayer = None
self._showSegmentationIn3D = False
self._showUncertaintyLayer = False
#end: members
labelingSlots = LabelingGui.LabelingSlots()
labelingSlots.labelInput = topLevelOperatorView.WriteSeeds
labelingSlots.labelOutput = topLevelOperatorView.opLabelArray.Output
labelingSlots.labelEraserValue = topLevelOperatorView.opLabelArray.EraserLabelValue
labelingSlots.labelNames = topLevelOperatorView.LabelNames
labelingSlots.labelDelete = topLevelOperatorView.opLabelArray.DeleteLabel
labelingSlots.maxLabelValue = topLevelOperatorView.opLabelArray.MaxLabelValue
labelingSlots.labelsAllowed = topLevelOperatorView.LabelsAllowed
# We provide our own UI file (which adds an extra control for interactive mode)
directory = os.path.split(__file__)[0]
if drawerUiPath is None:
drawerUiPath = os.path.join(directory, 'carvingDrawer.ui')
self.dialogdirCOM = os.path.join(directory, 'carvingObjectManagement.ui')
self.dialogdirSAD = os.path.join(directory, 'saveAsDialog.ui')
rawInputSlot = topLevelOperatorView.RawData
super(CarvingGui, self).__init__(parentApplet, labelingSlots, topLevelOperatorView, drawerUiPath, rawInputSlot)
self.labelingDrawerUi.currentObjectLabel.setText("<not saved yet>")
# Init special base class members
self.minLabelNumber = 2
self.maxLabelNumber = 2
mgr = ShortcutManager()
ActionInfo = ShortcutManager.ActionInfo
#set up keyboard shortcuts
mgr.register( "3", ActionInfo( "Carving",
"Run interactive segmentation",
"Run interactive segmentation",
self.labelingDrawerUi.segment.click,
self.labelingDrawerUi.segment,
self.labelingDrawerUi.segment ) )
try:
self.render = True
self._shownObjects3D = {}
self._renderMgr = RenderingManager(
renderer=self.editor.view3d.qvtk.renderer,
qvtk=self.editor.view3d.qvtk)
except:
self.render = False
# Segmentation is toggled on by default in _after_init, below.
# (We can't enable it until the layers are all present.)
self._showSegmentationIn3D = False
self._segmentation_3d_label = None
self.labelingDrawerUi.segment.clicked.connect(self.onSegmentButton)
self.labelingDrawerUi.segment.setEnabled(True)
self.topLevelOperatorView.Segmentation.notifyDirty( bind( self._update_rendering ) )
self.topLevelOperatorView.HasSegmentation.notifyValueChanged( bind( self._updateGui ) )
## uncertainty
self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(False)
self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(False)
def onUncertaintyFGButton():
logger.debug( "uncertFG button clicked" )
pos = self.topLevelOperatorView.getMaxUncertaintyPos(label=2)
self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
self.labelingDrawerUi.pushButtonUncertaintyFG.clicked.connect(onUncertaintyFGButton)
def onUncertaintyBGButton():
logger.debug( "uncertBG button clicked" )
pos = self.topLevelOperatorView.getMaxUncertaintyPos(label=1)
self.editor.posModel.slicingPos = (pos[0], pos[1], pos[2])
self.labelingDrawerUi.pushButtonUncertaintyBG.clicked.connect(onUncertaintyBGButton)
def onUncertaintyCombo(value):
if value == 0:
value = "none"
self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(False)
self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(False)
self._showUncertaintyLayer = False
else:
if value == 1:
value = "localMargin"
elif value == 2:
value = "exchangeCount"
elif value == 3:
value = "gabow"
else:
raise RuntimeError("unhandled case '%r'" % value)
self.labelingDrawerUi.pushButtonUncertaintyFG.setEnabled(True)
self.labelingDrawerUi.pushButtonUncertaintyBG.setEnabled(True)
#.........这里部分代码省略.........
示例14: PixelClassificationGui
class PixelClassificationGui(LabelingGui):
###########################################
### AppletGuiInterface Concrete Methods ###
###########################################
def centralWidget( self ):
return self
def stopAndCleanUp(self):
for fn in self.__cleanup_fns:
fn()
# Base class
super(PixelClassificationGui, self).stopAndCleanUp()
def viewerControlWidget(self):
return self._viewerControlUi
def menus( self ):
menus = super( PixelClassificationGui, self ).menus()
# For now classifier selection is only available in debug mode
if ilastik_config.getboolean('ilastik', 'debug'):
def handleClassifierAction():
dlg = ClassifierSelectionDlg(self.topLevelOperatorView, parent=self)
dlg.exec_()
advanced_menu = QMenu("Advanced", parent=self)
classifier_action = advanced_menu.addAction("Classifier...")
classifier_action.triggered.connect( handleClassifierAction )
menus += [advanced_menu]
return menus
###########################################
###########################################
def __init__(self, parentApplet, topLevelOperatorView ):
self.parentApplet = parentApplet
# Tell our base class which slots to monitor
labelSlots = LabelingGui.LabelingSlots()
labelSlots.labelInput = topLevelOperatorView.LabelInputs
labelSlots.labelOutput = topLevelOperatorView.LabelImages
labelSlots.labelEraserValue = topLevelOperatorView.opLabelPipeline.opLabelArray.eraser
labelSlots.labelDelete = topLevelOperatorView.opLabelPipeline.DeleteLabel
labelSlots.labelNames = topLevelOperatorView.LabelNames
labelSlots.labelsAllowed = topLevelOperatorView.LabelsAllowedFlags
self.__cleanup_fns = []
# We provide our own UI file (which adds an extra control for interactive mode)
labelingDrawerUiPath = os.path.split(__file__)[0] + '/labelingDrawer.ui'
# Base class init
super(PixelClassificationGui, self).__init__( parentApplet, labelSlots, topLevelOperatorView, labelingDrawerUiPath )
self.topLevelOperatorView = topLevelOperatorView
self.interactiveModeActive = False
# Immediately update our interactive state
self.toggleInteractive( not self.topLevelOperatorView.FreezePredictions.value )
self._currentlySavingPredictions = False
self.labelingDrawerUi.liveUpdateButton.setEnabled(False)
self.labelingDrawerUi.liveUpdateButton.setIcon( QIcon(ilastikIcons.Play) )
self.labelingDrawerUi.liveUpdateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.labelingDrawerUi.liveUpdateButton.toggled.connect( self.toggleInteractive )
self.topLevelOperatorView.LabelNames.notifyDirty( bind(self.handleLabelSelectionChange) )
self.__cleanup_fns.append( partial( self.topLevelOperatorView.LabelNames.unregisterDirty, bind(self.handleLabelSelectionChange) ) )
self._initShortcuts()
# FIXME: We MUST NOT enable the render manager by default,
# since it will drastically slow down the app for large volumes.
# For now, we leave it off by default.
# To re-enable rendering, we need to allow the user to render a segmentation
# and then initialize the render manager on-the-fly.
# (We might want to warn the user if her volume is not small.)
self.render = False
self._renderMgr = None
self._renderedLayers = {} # (layer name, label number)
# Always off for now (see note above)
if self.render:
try:
self._renderMgr = RenderingManager( self.editor.view3d )
except:
self.render = False
# toggle interactive mode according to freezePredictions.value
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
def FreezePredDirty():
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
# listen to freezePrediction changes
self.topLevelOperatorView.FreezePredictions.notifyDirty( bind(FreezePredDirty) )
self.__cleanup_fns.append( partial( self.topLevelOperatorView.FreezePredictions.unregisterDirty, bind(FreezePredDirty) ) )
def initViewerControlUi(self):
#.........这里部分代码省略.........
示例15: PixelClassificationGui
class PixelClassificationGui(LabelingGui):
###########################################
### AppletGuiInterface Concrete Methods ###
###########################################
def centralWidget( self ):
return self
def stopAndCleanUp(self):
# Base class first
super(PixelClassificationGui, self).stopAndCleanUp()
# Ensure that we are NOT in interactive mode
self.labelingDrawerUi.liveUpdateButton.setChecked(False)
self._viewerControlUi.checkShowPredictions.setChecked(False)
self._viewerControlUi.checkShowSegmentation.setChecked(False)
self.toggleInteractive(False)
for fn in self.__cleanup_fns:
fn()
def viewerControlWidget(self):
return self._viewerControlUi
###########################################
###########################################
def __init__(self, topLevelOperatorView, shellRequestSignal, guiControlSignal, predictionSerializer ):
# Tell our base class which slots to monitor
labelSlots = LabelingGui.LabelingSlots()
labelSlots.labelInput = topLevelOperatorView.LabelInputs
labelSlots.labelOutput = topLevelOperatorView.LabelImages
labelSlots.labelEraserValue = topLevelOperatorView.opLabelPipeline.opLabelArray.eraser
labelSlots.labelDelete = topLevelOperatorView.opLabelPipeline.opLabelArray.deleteLabel
labelSlots.maxLabelValue = topLevelOperatorView.MaxLabelValue
labelSlots.labelsAllowed = topLevelOperatorView.LabelsAllowedFlags
labelSlots.LabelNames = topLevelOperatorView.LabelNames
self.__cleanup_fns = []
# We provide our own UI file (which adds an extra control for interactive mode)
labelingDrawerUiPath = os.path.split(__file__)[0] + '/labelingDrawer.ui'
# Base class init
super(PixelClassificationGui, self).__init__( labelSlots, topLevelOperatorView, labelingDrawerUiPath )
self.topLevelOperatorView = topLevelOperatorView
self.shellRequestSignal = shellRequestSignal
self.guiControlSignal = guiControlSignal
self.predictionSerializer = predictionSerializer
self.interactiveModeActive = False
# Immediately update our interactive state
self.toggleInteractive( not self.topLevelOperatorView.FreezePredictions.value )
self._currentlySavingPredictions = False
self.labelingDrawerUi.liveUpdateButton.setEnabled(False)
self.labelingDrawerUi.liveUpdateButton.setIcon( QIcon(ilastikIcons.Play) )
self.labelingDrawerUi.liveUpdateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.labelingDrawerUi.liveUpdateButton.toggled.connect( self.toggleInteractive )
self.topLevelOperatorView.MaxLabelValue.notifyDirty( bind(self.handleLabelSelectionChange) )
self.__cleanup_fns.append( partial( self.topLevelOperatorView.MaxLabelValue.unregisterDirty, bind(self.handleLabelSelectionChange) ) )
self._initShortcuts()
try:
self.render = True
self._renderedLayers = {} # (layer name, label number)
self._renderMgr = RenderingManager(
renderer=self.editor.view3d.qvtk.renderer,
qvtk=self.editor.view3d.qvtk)
except:
self.render = False
# toggle interactive mode according to freezePredictions.value
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
def FreezePredDirty():
self.toggleInteractive(not self.topLevelOperatorView.FreezePredictions.value)
# listen to freezePrediction changes
self.topLevelOperatorView.FreezePredictions.notifyDirty( bind(FreezePredDirty) )
self.__cleanup_fns.append( partial( self.topLevelOperatorView.FreezePredictions.unregisterDirty, bind(FreezePredDirty) ) )
def initViewerControlUi(self):
localDir = os.path.split(__file__)[0]
self._viewerControlUi = uic.loadUi( os.path.join( localDir, "viewerControls.ui" ) )
# Connect checkboxes
def nextCheckState(checkbox):
checkbox.setChecked( not checkbox.isChecked() )
self._viewerControlUi.checkShowPredictions.nextCheckState = partial(nextCheckState, self._viewerControlUi.checkShowPredictions)
self._viewerControlUi.checkShowSegmentation.nextCheckState = partial(nextCheckState, self._viewerControlUi.checkShowSegmentation)
self._viewerControlUi.checkShowPredictions.clicked.connect( self.handleShowPredictionsClicked )
self._viewerControlUi.checkShowSegmentation.clicked.connect( self.handleShowSegmentationClicked )
# The editor's layerstack is in charge of which layer movement buttons are enabled
model = self.editor.layerStack
self._viewerControlUi.viewerControls.setupConnections(model)
#.........这里部分代码省略.........