图像处理:利用相似度处理相似度较大的图像

import sys
import os
import cv2def aHash(img):# 均值哈希算法# 缩放为8*8img = cv2.resize(img, (8, 8))# 转换为灰度图gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# s为像素和初值为0,hash_str为hash值初值为''s = 0hash_str = ''# 遍历累加求像素和for i in range(8):for j in range(8):s = s + gray[i, j]# 求平均灰度avg = s / 64# 灰度大于平均值为1相反为0生成图片的hash值for i in range(8):for j in range(8):if gray[i, j] > avg:hash_str = hash_str + '1'else:hash_str = hash_str + '0'return hash_strdef cmpHash(hash1, hash2):# Hash值对比# 算法中1和0顺序组合起来的即是图片的指纹hash。顺序不固定,但是比较的时候必须是相同的顺序。# 对比两幅图的指纹,计算汉明距离,即两个64位的hash值有多少是不一样的,不同的位数越小,图片越相似# 汉明距离:一组二进制数据变成另一组数据所需要的步骤,可以衡量两图的差异,汉明距离越小,则相似度越高。汉明距离为0,即两张图片完全一样n = 0# hash长度不同则返回-1代表传参出错if len(hash1) != len(hash2):return -1# 遍历判断for i in range(len(hash1)):# 不相等则n计数+1,n最终为相似度if hash1[i] != hash2[i]:n = n + 1return ndef runAllImageSimilaryFun(para1, para2):# 均值、差值、感知哈希算法三种算法值越小,则越相似,相同图片值为0# 三直方图算法和单通道的直方图 0-1之间,值越大,越相似。 相同图片为1# t1,t2   14;19;10;  0.70;0.75# t1,t3   39 33 18   0.58 0.49# s1,s2  7 23 11     0.83 0.86  挺相似的图片# c1,c2  11 29 17    0.30 0.31# 通过imread方法直接读取物理路径img1 = cv2.imread(para1)img2 = cv2.imread(para2)hash1 = aHash(img1)hash2 = aHash(img2)n1 = cmpHash(hash1, hash2)# print('均值哈希算法相似度aHash:', n1)return n1THRE_VALUE=35   # 相似度阈值
def sort_image():# 图像需要保存的目录aime_path=r"D:\PycharmProjects\temp_file\aim_image"# 原始图像目录origin_path=r"D:\PycharmProjects\temp_file\save_images"aim_files = os.listdir(aime_path)# 原始图像名称列表ori_num_name=[]# 需要备份的图像文件名称aime_num_name=[]origin_files = os.listdir(origin_path)for ori_file in origin_files:file_ = os.path.splitext(ori_file)[0]ori_num_name.append(int(file_))ori_num_name = sorted(ori_num_name)        # 按照顺序由小到大进行排序while ori_num_name:name_pop = ori_num_name.pop(0)# 判断需要备份的图像名称列表是否为空,为空,则添加作为第一个,否则进行图像相似度比较if len(aime_num_name)==0:aime_num_name.append(str(name_pop)+".jpg")else:# 进行比较,如果相似度大于阈值,则添加进aime_num_name中ori_path = os.path.join(origin_path, str(name_pop) + ".jpg")previous_path = os.path.join(origin_path, aime_num_name[-1])# 进行哈希比较,得到两幅图像的相似度hash_value=runAllImageSimilaryFun(ori_path,previous_path)print(hash_value)if hash_value>30:aime_num_name.append(str(name_pop)+".jpg")print(aime_num_name)if __name__ == '__main__':sort_image()

图像处理:利用相似度处理相似度较大的图像相关推荐

  1. matlab怎么利用圆形度提取园,基于Matlab+GUI图像处理的物料粒度与圆形度测试.pdf...

    基于Matlab+GUI图像处理的物料粒度与圆形度测试.pdf 第36卷第2期 中国农机化学报 Vol_36No.2 2015年3月 JournalofChinese Mechanization Ma ...

  2. 全景效果图html5,利用html5实现的360度全景图浏览(带天地)

    [实例简介]利用html5实现的360度全景图浏览(带天地) [实例截图] [核心代码] var camera, scene, renderer; var texture_placeholder, i ...

  3. 句子相似度--余弦相似度算法的实现

    1.余弦相似度 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量.余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似 ...

  4. android 進度條_Android ProgressBar 反向進度條/進度條從右到左走

    最近的項目,有個需求需要使用條狀圖顯示比例,並且右對齊,見下圖: 我想到了使用進度條,這樣不就不需要在代碼動態繪制條狀了,省了很多活. 那麼進度條怎樣從右向左顯示呢? 方案一: 將ProgressBa ...

  5. 【问题描述】在温度刻画的不同体系中,摄氏度以1标准大气压下水的结冰点为0度,沸点为100度。华氏度以1标准大气压下水的结冰点为32度,沸点为212度。

    [问题描述]在温度刻画的不同体系中,摄氏度以1标准大气压下水的结冰点为0度,沸点为100度.华氏度以1标准大气压下水的结冰点为32度,沸点为212度.如何利用程序辅助进行摄氏度和华氏度之间的转换 设计 ...

  6. 关联规则概念、啤酒加尿布引出购物篮分析、频繁项集、支持度+置信度+提升度

    关联规则概念.啤酒加尿布引出购物篮分析.频繁项集.支持度+置信度+提升度 目录

  7. LSTM模型在问答系统中的应用 2017-06-27 21:03 在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案。 1:采用句子相似度的方式。根据问题的字面相似度选择相似度最

    LSTM模型在问答系统中的应用 2017-06-27 21:03 在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案. 1:采用句子相似度的方式.根据问题的字面相似度选择相似度最 ...

  8. halcon知识:圆度和紧凑度

    一.说明 本文是halcon知识:select_shape究竟怎么用(1)的继续,关于select_shape的用途说的还不够,因为这些属性很多,有必要分开介绍. 二.圆度和紧凑度的直观演示 2.1 ...

  9. lisp如何将度分秒转换为弧度_地学中常用度、度分、度分秒,弧度、角度在MATLAB中的转换...

    地学中常用度.度分.度分秒,弧度.角度在MATLAB中的转换 转化为角度: deg = DMS2DEG(35,20,10) deg = 35.3361 转化为弧度 rad=DMS2RAD(35,20, ...

最新文章

  1. LeetCode中等题之最优除法
  2. Android WebView使用与JavaScript使用
  3. org.springframework.beans.factory.BeanCreationException: Error creating bean with name
  4. sql server varchar最大长度_来自灵魂的拷问—知道什么是SQL执行计划吗?
  5. LINUX基本命令行手册一
  6. 超级实用sap table
  7. jsp实现上一页下一页翻页功能
  8. java xml导出_java 导出xml文件的四种方式
  9. Ext.grid.Panel一定要有renderTo或autoRender属性,不然页面为空
  10. Linux学习笔记---修改CPU频率为自动调节模式
  11. 在布局空间标注的尺寸量不对_CAD解决布局标注尺寸不对问题 及快捷键混乱问题...
  12. SVN 分支合并到主干
  13. 组合数的各种性质和定理
  14. PowerWeChat 微信SDK 介绍
  15. ACM求多边形重心和面积问题
  16. [解决方案]罗技POWERPLAY鼠标垫无法连接G703/G903/G403等鼠标
  17. 2018最新Python视频教程
  18. C语言《程序设计基础课程设计》题库
  19. bit、byte、位、字节、汉字的关系
  20. vscode cmake-tools 的作用,以及和cmake的联系

热门文章

  1. Excel——数组入门
  2. fritzing导入元件_在Fritzing中创建自定义元件
  3. FG96-8CH 搭配Realsense D457 在Jetson AGX Orin/Xavier上的展示
  4. jdk11安装后没有jre的解决办法
  5. Linux系统设置用户密码规则(复杂密码策略)方法
  6. 商城-下单-订单系统接口
  7. 分享五个可以自助小程序搭建的网站
  8. 修复登录接口社区论坛微信小程序源码下载-支持多种发帖模式超强社区
  9. redis----缓存穿透、击穿、雪崩问题解决
  10. 六级核心词汇61~100