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
Exemple #2
0
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
Exemple #4
0
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
Exemple #6
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"):
Exemple #7
0
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()