# verifica o metodo a ser usado e inicializa um objeto para o respectivo metodo if(args["method"].upper() == "FOURIER"): queryDesc = FourierDescriptor(args["mask"]) indexFilepath = "indexes/" + str(args["mask"]) + "fourierindex.csv" elif(args["method"].upper() == "GCH"): queryDesc = GCHDescriptor((9, 12, 4)) indexFilepath = "indexes/gchindex.csv" elif(args["method"].upper() == "LCH"): queryDesc = LCHDescriptor((9, 12, 3)) indexFilepath = "indexes/lchindex.csv" else: sys.exit("\nMetodo descritor invalido!\n") # carrega a imagem de consulta em memoria e aplica o descritor query = cv2.imread(args["query"]) queryFeatures = queryDesc.describe(query) # inicializa um objeto que ira' fazer a comparacao da imagem de consulta com o banco de imagens searcher = Searcher(indexFilepath) # realiza a consulta das n-imagens mais semelhantes results = searcher.search(queryFeatures, int(args["limit"]), args["distance"]) ############################## DESCOMENTAR AQUI PRA MANDAR ##################################################### # percorre o vetor com as imagens mais semelhantes e imprime na saida padrao em ordem decrescente de similaridade #for (score, imageID) in results: # print imageID ################################################################################################################ t2 = time.time() print "Tempo: %.2f s" % (t2 - t1) ############################## COMENTAR DAQUI PARA BAIXO SE DESCOMENTAR EM CIMA ######################################################
indexFilepath = "indexes/lchindex.csv" else: sys.exit("Metodo descritor invalido!") # abre o indice para escrita indexFile = open(indexFilepath, "w") # atraves da funcao glob do modulo glob busca os nomes da imagens for imagePath in glob.glob(args["images"] + "/*.jpg"): # extrai o numero da imagem ini = imagePath.rfind("/") + 1 end = imagePath.rfind(".") imageID = imagePath[ini:end] # carrega a imagem em memoria image = cv2.imread(imagePath) # caso a imagem nao esteja vazia if image is not None: # aplica o descritor na imagem features = descriptor.describe(image) # escreve o vetor de caracterisicas no arquivo de indice (cada linha e' uma imagem) features = [str(f) for f in features] indexFile.write("%s, %s\n" % (imageID, ",".join(features))) indexFile.close() print "Indice gerado com sucesso!" t2 = time.time() print "Tempo: %.2f s" % (t2 - t1)
else: sys.exit("Metodo descritor invalido!") # abre o indice para escrita indexFile = open(indexFilepath, "w") # atraves da funcao glob do modulo glob busca os nomes da imagens for imagePath in glob.glob(args["images"] + "/*.jpg"): # extrai o numero da imagem ini = imagePath.rfind("/") + 1 end = imagePath.rfind(".") imageID = imagePath[ini:end] # carrega a imagem em memoria image = cv2.imread(imagePath) # caso a imagem nao esteja vazia if image is not None: # aplica o descritor na imagem features = descriptor.describe(image) # escreve o vetor de caracterisicas no arquivo de indice (cada linha e' uma imagem) features = [str(f) for f in features] indexFile.write("%s, %s\n" % (imageID, ",".join(features))) indexFile.close() print "Indice gerado com sucesso!" t2 = time.time() print "Tempo: %.2f s" % (t2 - t1)