Spaces:
Configuration error
Configuration error
| import os | |
| import cv2 | |
| import numpy as np | |
| from flask import Flask, render_template, request, jsonify, redirect, url_for | |
| from werkzeug.utils import secure_filename | |
| from pyimagesearch.colordescriptor import ColorDescriptor | |
| from pyimagesearch.searcher import Searcher | |
| # create flask instance | |
| app = Flask(__name__) | |
| INDEX = os.path.join(os.path.dirname(__file__), 'index.csv') | |
| # main route | |
| def index(): | |
| return render_template('index.html', preview="static/init-preview.png") | |
| # image database url list route | |
| def image_list(): | |
| if request.method == "POST": | |
| try: | |
| imgList = [img for img in list(os.listdir(os.path.join(os.path.dirname(__file__), 'static/images/'))) if img[-4:] in ('.png', '.jpg', '.gif')] | |
| return jsonify(imgList=imgList) | |
| except Exception as e: | |
| return jsonify({"sorry": "Sorry, no results! Please try again."}), 500 | |
| # search route | |
| def search(): | |
| if request.method == "POST": | |
| RESULTS_ARRAY = [] | |
| # get url | |
| image_url = request.form.get('img') | |
| try: | |
| # initialize the image descriptor | |
| cd = ColorDescriptor((8, 12, 3)) | |
| # load the query image and describe it | |
| from skimage import io | |
| import cv2 | |
| query = cv2.imread(os.path.join(os.path.dirname(__file__), 'static/images/'+image_url)) | |
| features = cd.describe(query) | |
| # perform the search | |
| searcher = Searcher(INDEX) | |
| results = searcher.search(features) | |
| # loop over the results, displaying the score and image name | |
| for (score, resultID) in results: | |
| RESULTS_ARRAY.append( | |
| {"image": str(resultID), "score": str(score)}) | |
| # return success | |
| return jsonify(results=(RESULTS_ARRAY[:101]), preview="images/"+image_url) | |
| except Exception as e: | |
| print(str(e)) | |
| # return error | |
| return jsonify({"sorry": "Sorry, no results! Please try again."}), 500 | |
| # run! | |
| if __name__ == '__main__': | |
| app.run('0.0.0.0', debug=True) | |