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)
Пример #2
0
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))
Пример #3
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)
Пример #4
0
 def test_get_forged_file(self):
     pic = FileAccess.get_forged_file('NFI-00701023.png')
     cv2.imshow("pic", pic)
     cv2.waitKey(0)
Пример #5
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)
Пример #6
0
 def test_normalizer_gray_scale(self):
     pic = FileAccess.get_files_of_person("002")[0]
     Normalizer.to_gray(pic)
Пример #7
0
 def test_get_files_of_person(self):
     pics = FileAccess.get_files_of_person("001")
     a = 3
Пример #8
0
 def test_file_access_get_base(self):
     path = FileAccess.get_base_path()
     self.assertEqual(path, "I:\\uni\\Machine Vision\\exercise2\\Signature")
Пример #9
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