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}')
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')
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)
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'>")
def test_get_keypoints_len_two(self): self.assertGreaterEqual(len(im.get_keypoints(self.img)[1]), 930)