Example #1
0
def main():
    if len(sys.argv) >= 2:
        input_file = sys.argv[1]
    else:
        print('Forgot file name as arg')

    with open(input_file, 'r') as f:
        urls = f.readlines()

    for u in urls:
        ureq.urlretrieve(u, 'tmp_download.jpg')
        img = im.load_img('tmp_download.jpg')
        os.remove('tmp_download.jpg')
        kp, desc = im.get_keypoints(img)
        pack = dm.pack_keypoints(kp, desc)
        img_hash = tlsh.hash(str(pack).encode('utf-8'))

        dm.write_postgres(img_hash, pack, u)
        print(f'Added: {u}')
Example #2
0
def upload_filer():
    if request.method == 'POST':
        f = request.files['file']
        f.save(f'{FILE_PREFIX}{secure_filename(f.filename)}')

        # Process Image
        img = im.load_img(f'{FILE_PREFIX}{secure_filename(f.filename)}')
        kp, desc = im.get_keypoints(img)
        img_output = dm.pack_keypoints(kp, desc)
        img_hash = tlsh.hash(str(img_output).encode('utf-8'))

        if not app.testing:
            result = dm.query_postgres(img_hash)
        else:
            with open('tests/data_uploader.txt', 'rb') as f:
                result = pickle.load(f)

        f = open('panic.log', 'w')
        matches = {}
        for item in result:
            tmp_kp, tmp_desc = dm.unpack_keypoints(item[2])
            match_score = im.get_match(desc, tmp_desc)
            matches[item[1]] = len(match_score)
        f.write(f'{matches}')
        f.write(f'{len(matches)}')
        f.close()

        # Return Results
        if len(matches) > 0:
            url = max(matches, key=matches.get)
            # Generate random string for filename
            # This can help prevent browser caching of an image that has changed
            filename = ''.join(
                random.choice(string.ascii_letters) for i in range(10))
            ureq.urlretrieve(url, f'static/img/{filename}')
            img_2 = im.load_img(f'static/img/{filename}')
            os.remove(f'static/img/{filename}')

            return render_template('result.html', value=url)
        return render_template('nomatch.html')
Example #3
0
 def setUp(self):
     self.img = im.load_img('testImages/upside.jpg')
     self.kp, self.desc = im.get_keypoints(self.img)
     self.packed_kp = dm.pack_keypoints(self.kp, self.desc)
     self.packed_kp = str(dm.sanatise(self.packed_kp))
     self.ukp, self.udesc = dm.unpack_keypoints(self.packed_kp)
Example #4
0
 def test_get_keypoints_type(self):
     key_lst = im.get_keypoints(self.img)[0]
     for i in range(len(key_lst)):
         self.assertEqual(str(type(key_lst[i])), "<class 'cv2.KeyPoint'>")
Example #5
0
 def test_get_keypoints_len_two(self):
     self.assertGreaterEqual(len(im.get_keypoints(self.img)[1]), 930)