下文中介绍了一种相似图片搜索的算法,算法的思路如下:

1.把所有操作图片转换为8×8的灰度图片;

2.计算每张图片的指纹。把8x8总共64个像素点和其平均灰度值比较,大于平均值返回1,否则返回0,这样每张图都可以用64bit二进制数表示。

3.比较指定图片和搜索图片的指纹。通过汉明距来表征其差异。汉明距越大,表示这两幅图片差异越大。

代码如下,使用的python版本3.8.6

import glob
import osfrom functools import reducefrom PIL import ImageEXTS = 'jpg', 'jpeg', 'JPEG', 'gif', 'GIF', 'png', 'PNG'def avhash(im):if not isinstance(im, Image.Image):im = Image.open(im)im = im.resize((8, 8), Image.ANTIALIAS).convert('L')avg = reduce(lambda x, y: x + y, im.getdata()) / 64.tmp_a = map(lambda i: 0 if i < avg else 1, list(im.getdata()))tmp_b = list(tmp_a)i = 0c = 0for dt in tmp_b:c = c + (dt << i)i = i +1return cdef hamming(h1, h2):h, d = 0, h1 ^ h2while d:h += 1d &= d - 1return hif __name__ == '__main__':h = avhash("cat.jpg")wd = "cat"os.chdir(wd)images = []for ext in EXTS:images.extend(glob.glob('*.%s' % ext))seq = []for f in images:seq.append((f, hamming(avhash(f), h)))for f, ham in sorted(seq, key=lambda i: i[1]):print ("%d\t%s" % (ham, f))

python实现一种相似图片搜索算法相关推荐

  1. 【Python】三种读取图片和显示图片的方法 pillow opencv torchvision

    以下代码可以直接运行(同目录下需先放一张 dog.jpg 的图片) from PIL import Image import numpy as np import cv2 as cv from tor ...

  2. 10 行 Python 代码,批量压缩图片 500 张,简直太强大了

    这几天,我在用 Github page + hexo 搭建个人网站,为了延续风格,就想把配图与文章一起迁移过去.这时候就出现了一个难题:我所用的图片都是高清大图,放到网站上会严重拖慢加载速度.因此,需 ...

  3. vb.net读取excel并写入dgv_如何用Python读取Excel中的图片?然后写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

  4. python docx 合并文档 图片_Python+pymupdf处理PDF文档案例6则

    推荐图书:<Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),清华大学出版社,2020年6月第1次印刷,7月第2次印刷 京东购买链接:https://it ...

  5. 如何用Python读取Excel中图片?又如何用Python往Excel中写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

  6. python 识别图形验证码_Python图片验证码降噪处理实例!此乃识别验证码神技!...

    图片验证码算是网络数据采集上的一道拦路虎,虽然有诸多公开的ORC接口.云打码平台,一旦大规模应用起来,还是内部写程序进行识别处理比较好. 而自己写代码进行识别的话,又有很多种方案,比如最近火热的神经网 ...

  7. python如何把矩阵转换为图片_如何将numpy数组转换为(并显示)图片

    函数式编程 用python显示一张图片方法如下:import matplotlib.pyplot as plt # plt 用于显示图片import matplotlib.image as mpimg ...

  8. Python将PDF转成图片—PyMuPDF和pdf2image

    前言:在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将PDF转换成图片,然后对图片进行测试. 粗略的试了好几种方式,其中语言尝试了Python和Java,总体而言所找到的Python方 ...

  9. pdf转换成jpg python_【PyMuPDF和pdf2image】Python将PDF转成图片PNG和JPG

    公众号:前言:在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将PDF转换成图片,然后对图片进行测试. 粗略的试了好几种方式,其中语言尝试了Python和Java,总体而言所找到的Pyt ...

  10. python 生成pdf 文字和图片_Python系列—PDF文本与图片抽取

    PDF是人们日常使用最多的跨平台文档.其是一种用独立于应用程序.硬件.操作系统的方式呈现文档的文件格式.每个PDF文件包含固定布局的平面文档的完整描述,包括文本.字形.图形及其他需要显示的信息.具有良 ...

最新文章

  1. idea无法引用jar包中的class
  2. 使鼠标保持按住状态_MouseInc 鼠标手势工具
  3. Eclipse安装Jetty插件(Web容器)
  4. 火狐 新增标签 一直加载_在Firefox的新标签页中加载最后标签页的URL
  5. macOS Big Sur 11.1更新了!苹果macOS Big Sur 11.1正式版发布
  6. php ds扩展,PHP教程:老生常谈PHP中的数据结构:DS扩展
  7. 4服务器内存和普通内存_Java服务器内存过高CPU过高问题排查
  8. java.lang.UnsupportedOperationException WebView is not allowed in privileged processes
  9. element-ui上传图片的使用upload
  10. hybird简介以及安卓应用hybird初体验
  11. 最新最全的vue面试题+详细解答
  12. python求不规则图形面积_使用Python生成不规则形状的图形
  13. 【智慧农业】智慧温室建造流程
  14. [书籍翻译]12周撰写期刊文章 学术出版成功指南——第 8 周:你的文章的开头和结尾
  15. python实现直播功能_Python实现直播推流效果
  16. 传说之下打开debug模式超超超超超超超超详细方法
  17. document的用法
  18. 【C语言】机试100题及代码答案(上)
  19. word图片另存为变黑色_别处复制过来的 图像在word中粘贴后变黑怎么处理?
  20. 平均11岁的黑客你怕不怕?“孩子从小就该感受编程的乐趣!!”

热门文章

  1. Mac 快速打开终端快捷键
  2. 微型计算机上的tab作用,TAB键有什么用处
  3. 目标客户画像_用户画像是什么?怎么做用户画像?
  4. ps怎么放大图片保持清晰度?
  5. 深度学习论文: Compounding the Performance Improvements of Assembled Techniques in a CNN及其PyTorch实现
  6. linux 如何重建mbr,双系统如何删除Linux,恢复Windows从MBR引导启动?
  7. mcu AD采样值和物理值
  8. Java中字符串数组转 long[]基本类型数组的方法
  9. 杜邦线改成焊线_做杜邦线(假)教程
  10. 怎么在Excel里输入可以打钩的选择框?