使用python 多张图片和一张标准图片进行对比按照相似程度对图片进行排序代码
时间: 2023-05-31 07:07:04 浏览: 154
以下是使用Python对多张图片和一张标准图片进行对比,并按照相似程度对图片进行排序的示例代码:
```python
import cv2
import numpy as np
import os
# 读取标准图片
standard_img = cv2.imread("standard.jpg")
# 定义相似度计算函数
def similarity(img1, img2):
# 转换为灰度图像
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
# 计算直方图
hist1 = cv2.calcHist([gray1], [0], None, [256], [0, 256])
hist2 = cv2.calcHist([gray2], [0], None, [256], [0, 256])
# 计算相似度
similarity = cv2.compareHist(hist1, hist2, cv2.HISTCMP_CORREL)
return similarity
# 遍历文件夹中的所有图片并计算相似度
folder = "images"
images = os.listdir(folder)
results = []
for image in images:
img = cv2.imread(os.path.join(folder, image))
sim = similarity(img, standard_img)
results.append((image, sim))
# 按照相似度对图片进行排序
results.sort(key=lambda x: x[1], reverse=True)
# 输出排序结果
for result in results:
print(result[0], result[1])
```
首先读取标准图片,然后定义了一个相似度计算函数,该函数将两张图片转换为灰度图像,并计算直方图。然后,使用cv2.compareHist函数计算相似度,最后将结果存储在一个列表中。
接下来,遍历文件夹中的所有图片,并计算与标准图片的相似度。将结果存储在一个元组中,该元组包含图片文件名和相似度。
最后,使用Python的sort函数按照相似度对结果进行排序,并打印排序结果。
阅读全文