乱序图片排序并重命名

说明与目的

说明

文件夹中存放着乱序的图片,图片名按照顺序排放!

在这里插入图片描述
以第一张图片为基准,将后面的图片依次与其计算两者的相似度进行排序!
实际应用中,避免不了相似度相同的值,因此,特意拷贝图片4和图片5
其中5和6是同一张图片,4和8是同一张图片

目的
我们希望得到的结果如下图
在这里插入图片描述
箭头指向是拷贝图片的副本

举例代码

key_list = ['Google', 'Runoob', 'Taobao', 'Baidu','Taobao1']
value_list = [0.3, 0.2 ,0.1 , 0.4 , 0.1]

# {'Google': 0.3, 'Runoob': 0.2, 'Taobao': 0.1, 'Baidu': 0.4, 'Taobao1': 0.1}
di = dict(zip(key_list,value_list)) # 字典生成
# print(di)

newvalue_list = value_list[:]
newvalue_list.sort()
# [0.1, 0.1, 0.2, 0.3, 0.4]
# print(newvalue_list)

newkey_list = []
for i in range(len(key_list)):
    a = newvalue_list[i]
    index =value_list.index(newvalue_list[i])
    delete_key = key_list[index]
    value_list.remove(a)

    newkey_list.append(delete_key)
    key_list.remove(delete_key)
    
# ['Taobao', 'Taobao1', 'Runoob', 'Google', 'Baidu']
# print(newkey_list)

如何计算两张图片的相似度

//伪代码 有空再补充
probability = detect_image(image_1, image_2)

最终代码

# 代码不完整,包含上述“detect_image”函数
# 导入相关模块
import numpy as np
import os 
from PIL import Image

if __name__ == "__main__":
	# 所有图片的地址放入这个列表中
	img_path = []
	# 后面所有图片与第一张图片相似度的值
	value_list = []
	# 与之对应的图片地址
	key_list = []
	# 对value_list按照从小到大的顺序进行排序
	newvalue_list = []
	# value_list排序后对应的图片地址
	newkey_list = []

	# 图片存放的地址
	path = r"D:\bishe\chang\shunxu"
	img_name = []
	for i in sorted(os.listdir(path):
		img_name.append(i)
		character_path = os.path.join(path, i)
		img_path.append(character_path)
	# 以第1张为基准,故从第2张开始取
	for i in range(1, len(img_path)):
		# 第1张图片 即基准图片
		image_1 = Image.open(img_path[0])
		image_2 = Image.open(img_path[i])
		probability = detect_image(image_1, image_2)
		value_list.append(probability)
		key_list.append(img_path[i])
	# 生成字典 {图片地址:与基准图片的相似度}
	di = dict(zip(key_list,value_list))

	for j in range(len(di)):
		# index() 函数用于从列表中找出某个值第一个匹配项的索引位置。
		index = value_list.index(newvalue_list[j])
		# 当列表中有相同元素 即相似度列表value_list中有相同的相似度值时
		# 使用 remove() 函数用于移除列表中某个值的第一个匹配项。 
		# 匹配到value_list排序后对应图片地址 时 就删掉
		value_list.remove(newvalue_list[j])

		# 先添加 在删掉
		newkeys_list.append(key_list[index])
        key_list.remove(key_list[index])

	# 图片的重命名
	# 图片的最终地址为path+"\mouren_"+num+".png" 
	# 如第2张图片为“D:\bishe\chang\shunxu\mouren_2.png”
	# 其中num 从1开始 
	img_name1 = r"\mouren_"
	img_name2 = ".png"

	for j in range(len(newkey_list)):
		name = newkeys_list[j]
		num = j+2
		new_name = path + img_name1 + num + img_name2
		os.rename(name,new_name)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值