def fill_person_info(cls, person_id):
        if person_id in cls.standards:
            return

        signatures = FileAccess.get_files_of_person(person_id)
        normalized = [
            Normalizer.crop_make_binary_image(signature)
            for signature in signatures
        ]
        average_height = round(mean([image.shape[0] for image in normalized]))
        average_width = round(mean([image.shape[1] for image in normalized]))
        scaled_to_standard_dimensions_signatures =\
            [Normalizer.resize(average_width, average_height, img) for img in normalized]

        def get_black_pixel_no(pic):
            count = 0
            for i in range(pic.shape[0]):
                for j in range(pic.shape[1]):
                    if pic[i, j] == 0:
                        count += 1
            return count

        number_of_black_pixels = \
            [get_black_pixel_no(pic) for pic in scaled_to_standard_dimensions_signatures]
        max_no_black_pixels = max(number_of_black_pixels)
        min_no_black_pixels = min(number_of_black_pixels)

        cls.standards[person_id] = \
            SignatureStandard(average_height, average_width, min_no_black_pixels, max_no_black_pixels)
Esempio n. 2
0
 def test_normalizer_crop(self):
     pic = FileAccess.get_files_of_person("002")[0]
     cropped = Normalizer.crop_make_binary_image(pic)
     cv2.imshow("original", pic)
     cv2.imshow("cropped", cropped)
     cv2.waitKey(0)
Esempio n. 3
0
 def __get_normalized_image(cls,
                            signature_image_name: str) -> numpy.ndarray:
     raw_pic = FileAccess.get_file(signature_image_name)
     normalized = Normalizer.crop_make_binary_image(raw_pic)
     return normalized