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)
import os import shutil from flask import Flask, redirect, url_for, render_template, send_file, request from file_access import FileAccess app = Flask(__name__) file_api = FileAccess("./local_storage") @app.route("/") def root_view(): return redirect(url_for("files_list_view")) @app.route("/files", defaults={"directory": ""}) @app.route("/files/", defaults={"directory": ""}) @app.route("/files/<path:directory>") def files_list_view(directory): sorted_files = sorted(file_api.list_directory(directory), key=lambda f: (not f['directory'], f['name'])) return render_template("files.html", path=directory, files=sorted_files, join=os.path.join, normpath=os.path.normpath) @app.route("/internal/download/<path:filepath>") def download_view(filepath): return send_file(file_api.get_file(filepath))
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 test_get_forged_file(self): pic = FileAccess.get_forged_file('NFI-00701023.png') cv2.imshow("pic", pic) cv2.waitKey(0)
def test_normalizer_to_black_and_white(self): pic = FileAccess.get_files_of_person("002")[0] pic = Normalizer.to_binary_image(pic) cv2.imshow("pic", pic) cv2.waitKey(0)
def test_normalizer_gray_scale(self): pic = FileAccess.get_files_of_person("002")[0] Normalizer.to_gray(pic)
def test_get_files_of_person(self): pics = FileAccess.get_files_of_person("001") a = 3
def test_file_access_get_base(self): path = FileAccess.get_base_path() self.assertEqual(path, "I:\\uni\\Machine Vision\\exercise2\\Signature")
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