基于颜色直方图的图像检索

使用数据第一个是有1000张图像的自然图像数据集
第二个是牛津大学建筑数据集

在这里插入图片描述

# -*- encoding: utf-8 -*-
"""
@File    : 颜色直方图图像检索.py
@Time    : 2021-04-18 10:56
@Author  : XD
@Email   : gudianpai@qq.com
@Software: PyCharm
"""
from tqdm import tqdm
import glob
from sklearn.preprocessing import normalize
import matplotlib.pyplot as plt
import numpy as np
import cv2

def show_img(ori_path, aim_path):
    plt.figure(figsize=(20, 10))
    img = cv2.imread(ori_path)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    plt.subplot(3, 5, 1)
    plt.imshow(img)
    plt.xticks([])
    plt.yticks([])
    plt.title('Original Image')

    for idx in range(10):
        img = cv2.imread(aim_path[idx])
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        plt.subplot(3, 5, 6 + idx)
        plt.imshow(img)
        plt.xticks([])
        plt.yticks([])
    plt.show()
def main():
    jpgs = glob.glob("./ox/*.jpg")
    hist_feat = []
    for path in tqdm(jpgs):
        img = cv2.imread(path)
        feat = cv2.calcHist([img], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256])
        hist_feat.append(feat.flatten())

    hist_feat = np.vstack(hist_feat)
    hist_feat = normalize(hist_feat)

    search_idx = 777
    ids = np.dot(hist_feat[search_idx], hist_feat.T)
    ids = np.argsort(ids)[::-1][1:]#从前向后取,而且还要去掉自身
    show_img(jpgs[search_idx], [jpgs[x] for x in ids[:10]])
if __name__ == '__main__':
    main()

在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值