def testBasic(self):
     '''QObject.signalsBlocked() and blockSignals()
     The signals aren't blocked by default.
     blockSignals returns the previous value'''
     obj = QObject()
     self.assertTrue(not obj.signalsBlocked())
     self.assertTrue(not obj.blockSignals(True))
     self.assertTrue(obj.signalsBlocked())
     self.assertTrue(obj.blockSignals(False))
     blocker = QSignalBlocker(obj)
     self.assertTrue(obj.signalsBlocked())
     blocker.unblock()
     self.assertTrue(not obj.signalsBlocked())
     blocker.reblock()
     self.assertTrue(obj.signalsBlocked())
     del blocker
     self.assertTrue(not obj.signalsBlocked())
Esempio n. 2
0
    def update_image(self, cv_img: np.ndarray):
        """ 
        Slot that gets called when a new image is available from the camera 

        handles the signal :attr:`camera.AbstractCamera.new_image_available`
        
        :param cv_img: the image array from the camera
        :type cv_img: np.ndarray, numpy 2D array

        .. seealso:: :py:meth:`camera_preview.CameraPreview.update_image`, :attr:`camera.AbstractCamera.new_image_available`
        """
        # block image signal to prevent overloading
        blocker = QSignalBlocker(self.cam)
        if self.cam.is_running:
            # evaluate droplet if checkbox checked
            eval = self.ui.evalChk.isChecked() or self._oneshot_eval
            self._oneshot_eval = False
            # display current fps
            self.ui.frameInfoLbl.setText('Running | FPS: ' +
                                         str(self.cam.get_framerate()))
            # save image frame if recording
            if self.ui.record_chk.isChecked():
                self.recorder.write_frame(
                    cv2.cvtColor(cv_img, cv2.COLOR_BGR2RGB))
        elif self._oneshot_eval:
            # enable evaluate for one frame (eg snapshots)
            eval = True
            self._oneshot_eval = False
        else:
            eval = False

        # if ROI size changed, cause update of internal variables for new image dimensions
        if self.cam._image_size_invalid:
            self.ui.camera_prev.invalidate_imagesize()
            self.cam._image_size_invalid = False

        # update preview image
        self.ui.camera_prev.update_image(cv_img, eval)

        # display droplet parameters
        self.ui.drpltDataLbl.setText(str(self.ui.camera_prev._droplet))

        # unblock signals from cam
        blocker.unblock()