pip install nanopqKs 是8的倍数,需要比数据维度小向量长度需要是M的倍数
默认按照距离排序,非常不错import datetime
import heapqimport osimport cv2
import nanopq
import numpy as npimport nanopq
import numpy as np
import shutildef dHash(gray,height):#缩放8*8# gray=cv2.resize(img,(64,63),interpolation=cv2.INTER_CUBIC)#转换灰度图# gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)hash_str=''#每行前一个像素大于后一个像素为1,相反为0,生成哈希for i in range(height):for j in range(height):if gray[i,j]>gray[i,j+1]:hash_str=hash_str+'1'else:hash_str=hash_str+'0'return hash_strdef pq_dis():N, D = 10000, 128X = np.random.random((N, D)).astype(np.float32)  # 10,000 128-dim vectorsquery = np.random.random((D,)).astype(np.float32)  # a 128-dim vector# Instantiate with M=8 sub-spacespq = nanopq.PQ(M=8,Ks=256)# Train with the top 1000 vectorspq.fit(X[:1000])# Encode to PQ-codesX_code = pq.encode(X)  # (10000, 8) with dtype=np.uint8time1=datetime.datetime.now()# Results: create a distance table online, and compute Asymmetric Distance to each PQ-codedists = pq.dtable(query).adist(X_code)nsmallestList = heapq.nsmallest(5, dists)print(nsmallestList)indexs=[dists.tolist().index(i) for i in nsmallestList]print(indexs)print(dists[indexs])print("time",(datetime.datetime.now()-time1).microseconds)if __name__ == '__main__':path=r"C:\Users\Administrator\Documents\Tencent Files\441648051\FileRecv\pic_error"files=os.listdir(path)datas=[]for file in files:img_1=cv2.imread(path+"/"+file,0)img1 = cv2.resize(img_1, (65, 64), interpolation=cv2.INTER_LINEAR)dhash=dHash(img1,64)data= list(map(int,dhash))datas.append(data)datas=np.asarray(datas,dtype=np.float32)N=len(datas)D=64*64query =datas[0]# np.random.random((D,)).astype(np.float32)  # a 128-dim vector# Instantiate with M=8 sub-spacespq = nanopq.PQ(M=8,Ks=48)# Train with the top 1000 vectorspq.fit(datas)# Encode to PQ-codesX_code = pq.encode(datas)  # (10000, 8) with dtype=np.uint8time1=datetime.datetime.now()# Results: create a distance table online, and compute Asymmetric Distance to each PQ-codedists = pq.dtable(query).adist(X_code)nsmallestList = heapq.nsmallest(54, dists)print(nsmallestList)indexs=[dists.tolist().index(i) for i in nsmallestList]print(indexs)for i in indexs:print(files[i])shutil.copy(path+"/"+files[i], "out/"+str(dists[i])+"_"+files[i])print("time",(datetime.datetime.now()-time1).microseconds)

python查找相似图片相关推荐

  1. python 查找损坏图片_使用Python查找损坏的图像

    python 查找损坏图片 赶上本系列: 第1部分:使用Python自动执行数字艺术家的重复任务 第2部分:针对数字艺术家的Python文件管理技巧 如果您正在计算机上处​​理图像,那么最终一定会遇到 ...

  2. python类似图片查找_python查找重复图片并删除(图片去重)

    本文实例为大家分享了python查找重复图片并删除的具体代码,供大家参考,具体内容如下 和网络爬虫配套的,也可单独使用,从网上爬下来的图片重复太多,代码支持识别不同尺寸大小一致的图片,并把重复的图片删 ...

  3. python查找图片区域_python批量识别图片指定区域文字内容

    python批量识别图片指定区域文字内容,供大家参考,具体内容如下 简介 对于一张图片,需求识别指定区域的内容 1.截取原始图上的指定图片当做模板 2.根据模板相似度去再原始图片上识别准确坐标 3.根 ...

  4. python PDF 转 图片

    python PDF 转 图片 fitz库 代码 import fitz import time import re import os def pdf2image(pdf_path): '''# 从 ...

  5. python查找文件夹下的文件,python 查找文件夹下所有文件 实现代码 -电脑资料

    复制代码代码如下: def find_file_by_pattern(pattern='.*', base=".", circle=True): '''''查找给定文件夹下面所有 ...

  6. python查找关键字所属行_Python查找文件有多牛?男默女泪!!!

    某天,隔壁大神正在看一份内核技术文档,我想研读下文档向大神"偷师",恰好我的虚拟XP桌面无法使用搜索功能,而且项目组一般是一起使用共享目录的,这就导致大量资料杂糅在一起,我要找到大 ...

  7. Python批量导入图片到Word文件

    问题背景:2017年4月应华章公司邀请,翻译一本来自美国的Python入门教材,全书共750页,2018年4月完成翻译交稿,2018年9月责任编辑寄来样稿进行印刷前校对.经过半个月的检查和校对,又进行 ...

  8. 用python爬虫制作图片下载器(超有趣!)

    这几天小菌给大家分享的大部分都是关于大数据,linux方面的"干货".有粉丝私聊小菌,希望能分享一些有趣的爬虫小程序.O(∩_∩)O哈哈,是时候露一手了.今天给大家分享的是一个适合 ...

  9. Python+Tesseract-OCR识别图片文字并保存到word文档

    目录 使用Python+Tesseract-OCR识别图片文字并保存到word文档 安装Tesseract-OCR 配置Tesseract-OCR 通过CMD验证Tesseract-OCR工作 安装p ...

  10. python 批量修改图片大小

    python 批量修改图片大小 一个文件夹下面有好多图片格式是jpg大小是19201080,把它们处理成1280720并按原先图片的名保存在另一路径下 这里首先要找到给定路径下所有的图片文件,然后在修 ...

最新文章

  1. java语言程序设计考点_计算机二级考试Java语言程序设计考点:关键字
  2. query判断值是否为空,针对前台提交数据的校验
  3. 用串口电缆实现双机互联(图)
  4. 输入十个数,输出其中最大数、下标,用函数实现
  5. SAP Commerce Cloud 架构概述
  6. JasperReports:棘手的部分
  7. c# 提取程序中的资源文件 .exe .resources .resx
  8. 苹果系统和安卓系统的区别_Android和iPhone的区别?还不如说安卓系统和IOS系统的差别...
  9. beetl模板使用场景_Beetl模板引擎入门教程
  10. lol封号维护服务器,LOL手游:各大服务器突然断开,众主播账号被永久封停
  11. pythoneval函数错误_python中eval函数未实现错误
  12. androidspring!Android开发究竟该如何学习,薪资翻倍
  13. 五大主流浏览器及其内核简要介绍
  14. 小镇走出的大厂女程序员,也害怕努力后仍一无所获
  15. Cocos2D教程:使用SpriteBuilder和Cocos2D 3.x开发横版动作游戏——Part 2
  16. Genexus 15 安卓SDK配置项
  17. 在web前段,最挣扎的问题尽然是单词!
  18. 视频的码率、帧率、分辨率之间的区别
  19. 2021年G1工业锅炉司炉考试内容及G1工业锅炉司炉考试技巧
  20. addEventListener的常用事件

热门文章

  1. 外语学习的真实方法及误区
  2. 无法打开coursera网站解决方案
  3. 鼠标右键菜单没有 新建 - 解决办法
  4. 苹果内部应用商店批准/审核 iPhone 应用程序相关流程
  5. 抖音怎么去除水印方法及小工具
  6. 谈谈如何快乐地工作(上班),以及如何评价一个人的层次
  7. 利用laravel框架创建todos
  8. 程序员,不甘平凡又害怕努力…
  9. 「3D建模」建模中什么是重新拓补?为什么要拓补,有何作用?
  10. 高德地图获取经纬度并逆定位获取地理位置名称(原生)