def showObjects(self): if not (self.contoursCb.isChecked() or self.showBBoxes.isChecked()) or self._files is None: return index = self.slider.value() try: mp = TiffProcessor( self._files[index], self._regex, self.segdlg.segmentationParams(), self.cbar.checkedChannels() ) # first channel for primary segementation mp.segmentation() except Exception as e: QMessageBox.critical(self, "Error", "%s:%s" % (type(e), str(e))) finally: objects = mp.objects() if not objects: self.viewer.clearPolygons() self.viewer.clearRects() return if self.contoursCb.isChecked(): self.cbar.setContours(objects.contours) if self.showBBoxes.isChecked(): self.cbar.drawRectangles(objects.centers.values(), self.segdlg.galSize.value(), isize=mp.size)
def showImage(self, index=0): # no image directory yet if self._files is None: return try: proc = TiffProcessor( self._files[index], self._regex, self.segdlg.segmentationParams(), self.cbar.checkedChannels() ) except IndexError: return self.viewer.clearPolygons() self.viewer.clearRects() images = proc.iterQImages() self.cbar.setImages(images, list(proc.iterprops()))
def _initialImage(self, index=0): """Process the first image.""" # don't know nz yet when segmentationParams is called self.segdlg.setZSlice(0, block=True) proc = TiffProcessor( self._files[index], self._regex, self.segdlg.segmentationParams(), self.cbar.checkedChannels() ) images = proc.iterQImages() props = list(proc.iterprops()) self.cbar.addChannels(len(images)) self.cbar.setImages(images, list(proc.iterprops())) state = self.segdlg.blockSignals(True) self.segdlg.setRegions(self.cbar.allChannels(), props) self.setMaxZSlice(proc.zSlices - 1) self.segdlg.blockSignals(state) self.slider.setRange(0, len(self._files) - 1) self.slider.setValue(index) self.showObjects()
def processBild(file_, regex, segparams, feature_groups, channels): try: gsize = segparams.values()[0].gallery_size mp = TiffProcessor(file_, regex, segparams, channels, gsize) mp.segmentation() mp.calculateFeatures(feature_groups) image = mp.image[:, :, :, channels.keys()] objects = mp.objects() # cannot return OrderedDict from multiprocessing, so I split the dict # and reconstruct it in the main process except Exception as e: return e else: return file_, image, objects.values(), objects.feature_names