找回密码
 立即注册
查看: 138|回复: 4

技术问题咨询下fqd,有没有图片相似匹配的python库或者接口

[复制链接]
发表于 2023-7-19 13:09:47 | 显示全部楼层 |阅读模式
比如训练100张图片
然后我挑出一张, 让他识别,找出100张中和这张照片最相似的一张
回复

使用道具 举报

0

主题

967

回帖

0

积分

新手上路

积分
0
发表于 2023-7-19 13:17:43 | 显示全部楼层
这个比较耗资源的。可以根据相似度给你排序。但每一张都得分析。

快速从大量图片中查找出相似图片的实现一般需要以下技术:

图像特征提取:提取图片中的特征向量,例如颜色直方图、SIFT特征等。
相似度计算:计算不同图片之间的相似度,例如余弦相似度、欧氏距离等。
图像搜索算法:根据相似度计算结果,对图片进行搜索排序,例如KNN算法、局部敏感哈希(LSH)算法等。
数据库存储:将提取的特征向量和图片索引存储到数据库中,方便后续的快速搜索。
Python中常用的图像处理库有OpenCV、Pillow等,可以用于图像特征提取和相似度计算。另外,Python中也有一些机器学习库可以实现图像搜索算法,例如scikit-learn、Annoy等。

以下是一个简单的实现步骤:

导入相关库,如OpenCV、numpy、scikit-learn等。
读取待搜索的图片并进行图像特征提取,生成特征向量。
读取数据库中已存储的图片特征向量,计算待搜索图片与数据库中图片的相似度。
根据相似度对搜索结果进行排序,并输出最相似的图片。
可以考虑使用多线程或分布式计算等方法加速搜索过程。
需要注意的是,相似度计算和搜索算法的效率对搜索速度有重要影响,因此需要针对具体问题选择合适的算法。同时,如果图片数量较大,建立索引和查询的效率也会对搜索速度产生影响,因此需要考虑相应的优化策略。

以下是一个简单的示例代码,使用 Python 的 Pillow 库实现从大量图片中查找相似图片
  1. from PIL import Imageimport numpy as npimport osimport shutildef compute_image_similarity(image_path1, image_path2):    """    计算两张图片的相似度    """    img1 = Image.open(image_path1)    img2 = Image.open(image_path2)    h1 = img1.histogram()    h2 = img2.histogram()    rms = np.sqrt(np.mean(np.subtract(h1, h2)**2))    return rmsdef find_similar_images(dataset_dir, data_dir, threshold=10):    """    从数据集中查找与样本图片相似度大于指定阈值的图片,并将其保存到 out 目录中    """    for filename1 in os.listdir(data_dir):        image_path1 = os.path.join(data_dir, filename1)        for filename2 in os.listdir(dataset_dir):            image_path2 = os.path.join(dataset_dir, filename2)            similarity = compute_image_similarity(image_path1, image_path2)            if similarity < threshold:                out_path = os.path.join("out", filename2)                shutil.copy(image_path2, out_path)if __name__ == "__main__":    dataset_dir = "dataset"    data_dir = "data"    out_dir = "out"    threshold = 10    if not os.path.exists(out_dir):        os.makedirs(out_dir)    find_similar_images(dataset_dir, data_dir, threshold)
复制代码
上述代码中,compute_image_similarity 函数计算两张图片的相似度,find_similar_images 函数遍历数据集中的图片,查找与样本图片相似度大于指定阈值的图片,并将其保存到 out 目录中。运行该代码后,输出的文件将保存在 out 目录中。
回复 支持 反对

使用道具 举报

0

主题

970

回帖

0

积分

新手上路

积分
0
发表于 2023-7-19 13:26:18 | 显示全部楼层
建议直接用百度云平台的图像分析功能,实际生产环境用过还不错
回复 支持 反对

使用道具 举报

0

主题

1019

回帖

0

积分

新手上路

积分
0
发表于 2023-7-19 13:35:27 | 显示全部楼层
我去试一下,谢谢大佬
回复 支持 反对

使用道具 举报

0

主题

1061

回帖

0

积分

新手上路

积分
0
发表于 2023-7-19 13:43:59 | 显示全部楼层
谢谢大佬的实例{:3_48:}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|翻墙党

GMT+8, 2026-9-29 15:33 , Processed in 0.060792 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表