Пример #1
0
    def scan_next_frame(self, frame_img, is_single_image=False):
        self._frame_img = frame_img
        self._frame_number += 1
        self._is_single_image = is_single_image
        result = OpenScanResult(self._frame_number)
        result.set_old_barcode_data(self._old_barcode_data)
        result.start_timer()

        # Read all the barcodes in the image
        try:
            barcodes = self._perform_frame_scan()
            result.set_barcodes(barcodes)
        except NoBarcodesDetectedError as ex:
            # TODO: logging the error
            result.set_error(str(ex))

        # Create a 'blank' geometry object to store the barcode locations
        new_barcodes = result.new_barcodes()
        num_new_barcodes = len(new_barcodes)
        geometry = self._create_geometry(new_barcodes)

        # Create the plate
        if any(new_barcodes):
            plate = Plate(self.plate_type, num_slots=num_new_barcodes)
            plate.set_geometry(geometry)
            for s, barcode in enumerate(new_barcodes):
                plate.slot(s).set_barcode(barcode)
            result.set_plate(plate)

        result.end_timer()
        return result
Пример #2
0
    def _initialize_plate_from_barcodes(self):
        for bc in self._barcodes:
            bc.perform_read()

        if self._any_valid_barcodes():
            slot_scanner = self._create_slot_scanner()
            self._plate = Plate(self.plate_type)
            self._plate_scan = PlateScanner(self._plate, self._is_single_image)
            self._plate_scan.new_frame(self._geometry, self._barcodes, slot_scanner)