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)
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)
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