准备图片数据

可使用图片数据:https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/datasets/unsplash-25k-photos.zip

也可使用自己的图片

图片数据处理

## 获取文件列表
def get_flist(path, ext, ext2=None):results = []for root, dirs, files in os.walk(path):for f in files:if f.endswith(ext):results.append(os.path.join(root, f))if ext2 is not None and f.endswith(ext2):results.append(os.path.join(root, f))return results## 获取图片库信息
def get_img(emb_file, img_path = None):  ## 判断是否存在处理好的文件(图片库信息);有着直接读取,无着编码并存储         if os.path.exists(emb_file):with open(emb_file, 'rb') as fIn:img_names, img_emb = pickle.load(fIn)  print("Images:", len(img_names))return img_names, img_embelse:# 图片处理模型img_model = SentenceTransformer('clip-ViT-B-32')img_names = get_flist(img_path, ".jpg", ".png")print("Load Images:", len(img_names))# 只存储相对路径(便以图片地址改变)img_names2 = []for img in img_names:img_names2.append(img.replace(img_path, ""))img_emb = img_model.encode([Image.open(filepath) for filepath in img_names], batch_size=128, convert_to_tensor=True, show_progress_bar=True)with open(emb_file, 'wb') as f:pickle.dump((img_names2, img_emb), f)return img_names2, img_emb

查询图片并展示

# 查询
def search(model, img_emb, query, k=3):query_emb = model.encode([query], convert_to_tensor=True, show_progress_bar=False)hits = util.semantic_search(query_emb, img_emb, top_k=k)[0]print("Query:", query)return hits# 展示图片
def image_show(hits, img_names, img_folder):for hit in hits:img_file = img_folder + img_names[hit['corpus_id']]img = cv2.imread(img_file)cv2.imshow(str(hit['score']), img)if len(hits) > 0:cv2.waitKey(0)# 加载模型
def get_model():model = SentenceTransformer('clip-ViT-B-32-multilingual-v1')return model## 图片库地址
img_path = "E:\\image"
## 图片处理后保存的文件(便于下次直接加载)
emb_file = "E:\\image\\embeddings.pkl"
model = get_model()
img_names, img_emb = get_img(emb_file, img_path=img_path)hits = search(model, img_emb, "两只猫在睡觉")
print(hits)
image_show(hits, img_names, img_path)

结果:

Images: 24996
Query: 两只猫在睡觉
[{'corpus_id': 517, 'score': 0.30299052596092224}, {'corpus_id': 16452, 'score': 0.30096572637557983}, {'corpus_id': 9728, 'score': 0.29650789499282837}]

查询图片(根据自己的图片库)相关推荐

  1. 【Android 文件管理】分区存储 ( 创建与查询图片文件 )

    文章目录 一.分区存储模式下使用 MediaStore 插入图片 二.分区存储模式下使用 MediaStore 查询图片 三.相关文档资料 Android 分区存储系列博客 : [Android 文件 ...

  2. OpenCV FLANN在数据集中搜索查询图片的实例(附完整代码)

    OpenCV FLANN在数据集中搜索查询图片的实例 OpenCV FLANN在数据集中搜索查询图片的实例 OpenCV FLANN在数据集中搜索查询图片的实例 #include <iostre ...

  3. java查询图片前台展示_Java +spring MVC 后台图片流在前台页面显示

    用户上传图片后 (头像 or 个人照片等) ,需要在页面上显示,现在提供一种显示方式. 后台采用spring mvc的架构 前台是html Java代码: @ResponseBody @Request ...

  4. 【opencv450-samples】flann_search_dataset.cpp在数据集中搜索查询图片 说明 FLANN 使用的简单程序

    关键点匹配效果 一.数据集 二.目标搜索图像 三.源码: #define _CRT_SECURE_NO_WARNINGS // flann_search_dataset.cpp // Naive pr ...

  5. Android4.4 ContentResolver查询图片无效 及 图库删除 添加图片后,ContentResolver不更新的问题解决...

    问题背景: 參考链接 做了一个图片浏览,用ContentResolver扫描图库照片.且严格依照时间拍摄顺序排好序显示在listview里.例如以下图所看到的: 遇到的问题是在4.2的手机上能正常显示 ...

  6. 你生日那天的宇宙有多美?Python制作小工具一键查询图片!

    这两天微博有个热搜--你生日那天的宇宙,看上去很有趣,点进去链接发现是 NASA(美国航空航天局) 提供的一个网站(庆祝哈勃望远镜30周年),可以查询一下你生日那天哈勃望远镜拍到的太空图片.但是大概是 ...

  7. 用计算机浏览电子图片,电脑制作电子图片库手机上放有什么软件

    可以通过数码大师制作成音乐相册然后在手机播放的.当然,可以生成MP4等手机支持播放的格式的. 使用数码大师制作电子音乐相册: 1.导入制作电子相册的照片.首先,在顶部切换到"视频相册&quo ...

  8. 虚拟化服务器图片,虚拟化 VMware服务器 图片库.ppt

    虚拟化 VMware服务器 图片库 VMware Infrastructure 3 Storage vMotion VMware Infrastructure 3 Update Manager VMw ...

  9. Linux下查询图片的大小

    方法一:使用file命令(但是 jpg 文件就不太好用.) [root@server1 download]# ls vim.jpg [root@server1 download]# file vim. ...

最新文章

  1. SQL查询入门(下篇)
  2. 构件图(Component Diagram)
  3. Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动
  4. C语言学习之有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1
  5. chmod g+s 、chmod o+t 、chmod u+s
  6. 高并发大流量专题---6、独立图片服务器的部署
  7. Android官方开发文档Training系列课程中文版:管理Activity的生命周期之暂停和恢复Activity
  8. CDOJ 1805 矩阵 数学
  9. GD32F130之DMA
  10. 市场需求上升,网络安全硬件平台行业逐渐占据主导地位
  11. ZYNQ开发(七)Linux开发之Petaliunx的设计流程(SD卡启动)
  12. 大学英语综合教程一 Unit 8 课文内容英译中 中英翻译
  13. 我们来聊聊关于数据分析师的前景
  14. 关于TCP/IOCP构架中出现的假死连接解决方案
  15. 百度地图自定义坐标标识覆盖物,随地图缩放偏移解决办法
  16. CF567C Geometric Progression
  17. 大华乐橙云JavaWEB版实现网页直播远程监控DEMO
  18. 融资租赁业务系统整体介绍(一)
  19. element ui 饿了么UI中el-dialog样式修改问题
  20. 有剩余空间为何不能复制文件?

热门文章

  1. 中华传统文化题材网页设计主题:基于HTML+CSS设计放飞青春梦想网页【学生网页设计作业源码】
  2. 用于数据库的新兴数据结构Succinct Data Structure
  3. ANSA二次开发——BCGUI简介(3)
  4. 关于进制转换问题,10进制转换为26进制;
  5. java 809 128 题_java 第809页
  6. 【算法讲18:二次剩余】勒让德符号 | 欧拉判别法 | Cipolla 算法
  7. pb使用记录 关于pbt、pbr、pbd
  8. 什么软件能转换qlv格式视频无需工具转换方法
  9. RestTemplate消息转换器实现详解
  10. 叮咚,这有一封铁粉获取指南待查收