def search(Image): idealBins = (8, 12, 3) # 设定HSV的bins kps = 100 # 打开图片,由于图名可能为中文,不能用imread queryImage = cv2.imdecode(np.fromfile(Image, dtype=np.uint8), -1) # 初始化颜色特征提取器和结构特征提取器 colorDescriptor = color_descriptor.ColorDescriptor(idealBins) structureDescriptor = structure_descriptor.StructureDescriptor(kps) colorIndexPath = "colorindex.csv" structureIndexPath = "structureindex.csv" #获得目标图片的颜色特征和结构特征 queryFeatures = colorDescriptor.describe(queryImage) queryStructures = structureDescriptor.describe(queryImage) # 初始化搜索器并进行搜索 imageSearcher = searcher.Searcher(colorIndexPath, structureIndexPath) searchResults = imageSearcher.search(queryFeatures, queryStructures) result = [] for imageName, score in searchResults: #queryResult = cv2.imread(resultPath + "/" + imageName) result.append(imageName) return result
def index(): if request.method == 'POST': file = request.files['query_img'] img = Image.open(file.stream) # PIL image uploaded_img_path = "static/query/" + file.filename img.save(uploaded_img_path) idealBins = (8, 12, 3) idealDimension = (16, 16) colorDescriptor = color_descriptor.ColorDescriptor(idealBins) structureDescriptor = structure_descriptor.StructureDescriptor( idealDimension) queryImage = cv2.imread(uploaded_img_path) colorIndexPath = "static/color_index.csv" structureIndexPath = "static/structure_index.csv" resultPath = "static/dataset" queryFeatures = colorDescriptor.describe(queryImage) queryStructures = structureDescriptor.describe(queryImage) imageSearcher = searcher.Searcher(colorIndexPath, structureIndexPath) searchResults = imageSearcher.search(queryFeatures, queryStructures) return render_template('index.html', query_path=uploaded_img_path, scores=searchResults) else: return render_template('index.html')
def find_name(queryImage): idealBins = (8, 12, 3) idealDimension = (16, 16) colorDescriptor = color_descriptor.ColorDescriptor(idealBins) #掩模处理后的直方图 structureDescriptor = structure_descriptor.StructureDescriptor( idealDimension) #HSV色彩空间的矩阵 #queryImage = cv2.imread("query.jpg") colorIndexPath = os.path.abspath("colorindex") structureIndexPath = os.path.abspath("structureindex") queryFeatures = colorDescriptor.describe(queryImage) #掩模处理后的直方图 queryStructures = structureDescriptor.describe(queryImage) #HSV色彩空间的矩阵 imageSearcher = searcher.Searcher(colorIndexPath, structureIndexPath) searchResults = imageSearcher.search(queryFeatures, queryStructures) result = [] #图片名称所在的列表 for imageName, score in searchResults: result.append(imageName) return result
def searchEngine(colorIndexPath, structureIndexPath, query): """ colorIndexPath: Path to where the computed color index will be stored structureIndexPath: Path to where the computed structure index will be stored query: 可以是一个图片的路径,也可以是一个图片的url 当传入图片的url时,会将图片下载到当前工作目录中,形成query.jpg """ idealBins = (8, 12, 3) idealDimension = (16, 16) colorDescriptor = color_descriptor.ColorDescriptor(idealBins) structureDescriptor = structure_descriptor.StructureDescriptor( idealDimension) if not os.path.exists(query): try: downloadpath = os.path.join(os.getcwd(), 'query.jpg') urllib.urlretrieve(query, downloadpath) queryImage = cv2.imread('query.jpg') except Exception, e: print str(e) return None
import cv2 import glob import csv import re import numpy import structure_descriptor idealDimension = (16, 16) structureDescriptor = structure_descriptor.StructureDescriptor(idealDimension) testImage = cv2.imread("query/forest.jpg") rawQueryStructures = structureDescriptor.describe(testImage) # index output = open("structureIndex.csv", "w") for imagePath in glob.glob("dataset" + "/*.jpg"): imageName = imagePath[imagePath.rfind("/") + 1:] image = cv2.imread(imagePath) structures = structureDescriptor.describe(image) # write structures to file structures = [str(structure).replace("\n", "") for structure in structures] output.write("%s,%s\n" % (imageName, ",".join(structures))) # close index file output.close() # searcher def solveStructureDistance(self, structures, queryStructures, eps=1e-5): distance = 0
colorDesriptor = color_descriptor.ColorDescriptor((8, 12, 3)) output = open("H:/CBIR_python2/colorindex.csv", "w") for imagePath in glob.glob("H:/CBIR_python2/nikeset/*.png"): #文件名字 imageName = imagePath[24:29] image = cv2.imread(imagePath) features = colorDesriptor.describe(image) #读入特征 features = [str(feature).replace("\n", "") for feature in features] output.write("%s,%s\n" % (imageName, ",".join(features))) output.close() #空间构图特征 structureDescriptor = structure_descriptor.StructureDescriptor((64, 64)) output = open("H:/CBIR_python2/structindex.csv", "w") for imagePath in glob.glob("H:/CBIR_python2/nikeset/*.png"): #读取文件名字 imageName = imagePath[24:29] image = cv2.imread(imagePath) structures = structureDescriptor.describe(image) structures = [str(structure).replace("\n", "") for structure in structures] output.write("%s,%s\n" % (imageName, ",".join(structures))) output.close() output = open("H:/CBIR_python2/cannyindex.csv", "w") for imagePath in glob.glob("H:/CBIR_python2/canny/*.png"):
idealBins = (8, 12, 3) colorDesriptor = color_descriptor.ColorDescriptor(idealBins) output = open("colorindex.csv", "w") #arguments["colorindex"], "w") for imagePath in glob.glob("D:/Photos/airplanes_side" + "/*.jpg"): #arguments["dataset"] + "/*.jpg"): imageName = imagePath[imagePath.rfind("/") + 1:] image = cv2.imread(imagePath) features = colorDesriptor.describe(image) # write features to file features = [str(feature).replace("\n", "") for feature in features] output.write("%s,%s\n" % (imageName, ",".join(features))) # close index file output.close() kps = 100 structureDescriptor = structure_descriptor.StructureDescriptor(kps) output = open("structureindex.csv", "w") #arguments["structureindex"], "w") for imagePath in glob.glob("D:/Photos/airplanes_side" + "/*.jpg"): imageName = imagePath[imagePath.rfind("/") + 1:] image = cv2.imread(imagePath) structures = structureDescriptor.describe(image) # write structures to file structures = [str(structure).replace("\n", "") for structure in structures] output.write("%s,%s\n" % (imageName, ",".join(structures))) # close index file output.close()