识别一个文件夹中相似图片的交互界面设计python代码
时间: 2023-09-17 08:07:51 浏览: 129
以下是一个简单的交互界面设计python代码,用于识别一个文件夹中相似的图片:
```python
import os
from PIL import Image
from skimage.measure import compare_ssim
import tkinter as tk
from tkinter import filedialog
def compare_images(image1, image2):
# 将图片转换为灰度图像
image1 = Image.open(image1).convert("L")
image2 = Image.open(image2).convert("L")
# 使用结构相似性测量算法比较相似度
score, diff = compare_ssim(image1, image2, full=True)
return score
def find_similar_images(folder_path, threshold):
# 获取文件夹中所有的图片文件路径
image_paths = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.jpg') or f.endswith('.png')]
# 遍历每一对图片进行比较
for i in range(len(image_paths)):
for j in range(i+1, len(image_paths)):
image1 = image_paths[i]
image2 = image_paths[j]
similarity_score = compare_images(image1, image2)
# 如果相似度超过设定的阈值,则输出这一对图片的路径和相似度分数
if similarity_score > threshold:
print("Similar Images: {} and {}".format(image1, image2))
print("Similarity Score: {:.2f}".format(similarity_score))
# 创建一个简单的Tkinter界面
root = tk.Tk()
root.withdraw()
# 弹出文件夹选择框,获取用户选择的文件夹路径
folder_path = filedialog.askdirectory(title='Select Folder Containing Images')
# 设定相似度阈值
threshold = 0.8
# 找到相似的图片并输出结果
find_similar_images(folder_path, threshold)
```
这段代码使用 `Pillow` 库中的 `Image` 类将图片转换为灰度图像,然后使用 `scikit-image` 库中的 `compare_ssim()` 函数计算两张图片的相似度分数。用户可以通过弹出的文件夹选择框选择包含图片的文件夹路径,然后设定相似度阈值。程序会遍历文件夹中的每一对图片,如果相似度超过设定的阈值,则输出这一对图片的路径和相似度分数。
阅读全文