def main(): try: # initialize variable db = DataBase() settings = Config.Settings if args["feature"] is None: feature = settings["FEATURE"] else: feature = args["feature"] if args["type"] is None: kmeansType = Config.KMeans["TYPE"] else: kmeansType = args["type"] filename = "{}/{}_{}_kmeans{}_{}".format( settings["ROOT_DATASET_FOLDER"], settings["TRAIN_DATASET"], feature, kmeansType, settings["FEATURE_FILE"]) if db.checkFile(filename): (image_paths, im_features, idf, numWords, voc) = db.read(filename) else: descriptorHandler = Descriptor(Config) numWords = Config.KMeans["NUM_WORDS"] iterations = Config.KMeans["ITER"] imageFiles = glob.glob("{}/{}/*.*".format( settings["ROOT_DATASET_FOLDER"], settings["TRAIN_DATASET"])) if len(imageFiles) > settings["MAX_FILES"]: np.random.shuffle(imageFiles) imageFiles = imageFiles[:settings["MAX_FILES"]] # Extract features of images (image_paths, des_list, descriptors) = extractFeatures(descriptorHandler, feature, imageFiles) # Create descriptors # descriptors = createDescriptors(des_list, imageFiles); # Perform k-means clustering if (descriptors.shape[0] / numWords) < 100: numWords = numWords / 100 (voc, variance) = kMeansClustering(kmeansType, descriptors, numWords, iterations) # Calculate the TF-IDF of features filename = "{}/{}_{}_kmeans{}_{}".format( settings["ROOT_DATASET_FOLDER"], settings["TRAIN_DATASET"], feature, kmeansType, settings["FEATURE_FILE"]) (im_features, idf) = calculateTFIDF(des_list, voc, variance, numWords, len(image_paths)) db.write(filename, (image_paths, im_features, idf, numWords, voc)) except Exception as e: tb = traceback.format_exc() print 'Error found: %s' % (tb)
from database import DataBase from config import Config from descriptors.feature import Descriptor # Load the classifier, class names, scaler, number of clusters and vocabulary (voc) db = DataBase() descriptorHandler = Descriptor(Config) settings = Config.Settings Datasets = {} for key, value in Config.Features.iteritems(): filename = "{}/{}_{}_kmeans{}_{}".format(settings["ROOT_DATASET_FOLDER"], settings["TRAIN_DATASET"], value, Config.KMeans["TYPE"], settings["FEATURE_FILE"]) if db.checkFile(filename): (image_paths, im_features, idf, numWords, voc) = db.read(filename) Datasets[value] = (image_paths, im_features, idf, numWords, voc) def getQueryImage(image_path, cx=0, cy=0, cw=0, ch=0): if image_path.find("http") != -1: imgdata = urllib.urlopen(image_path) arr = np.asarray(bytearray(imgdata.read()), dtype=np.uint8) query = cv2.imdecode(arr, -1) else: if (image_path.find("/") == -1) and (image_path.find("\\") == -1): query = cv2.imread("{}/{}".format( Config.Resources["UPLOAD_FOLDER"], image_path)) elif (image_path.find(settings["ROOT_DATASET_FOLDER"]) == -1): query = cv2.imread("{}/{}".format(settings["ROOT_DATASET_FOLDER"],