用直方图代码统计两张图片的相似度
时间: 2023-08-21 18:06:27 浏览: 141
好的,以下是用Python实现的代码,使用了OpenCV库和matplotlib库:
```
import cv2
import matplotlib.pyplot as plt
# 读入两张图片
img1 = cv2.imread('image1.jpg', 0)
img2 = cv2.imread('image2.jpg', 0)
# 计算直方图
hist1 = cv2.calcHist([img1], [0], None, [256], [0, 256])
hist2 = cv2.calcHist([img2], [0], None, [256], [0, 256])
# 归一化直方图
hist1_norm = hist1 / sum(hist1)
hist2_norm = hist2 / sum(hist2)
# 计算相似度
similarity = cv2.compareHist(hist1_norm, hist2_norm, cv2.HISTCMP_CORREL)
# 显示直方图和相似度
plt.subplot(2, 1, 1)
plt.plot(hist1_norm, color='r')
plt.plot(hist2_norm, color='b')
plt.title('Histogram')
plt.legend(('Image 1', 'Image 2'))
plt.subplot(2, 1, 2)
plt.bar(0, similarity, color='g')
plt.title('Similarity: %.2f' % similarity)
plt.show()
```
其中,`cv2.imread()`函数用于读入图片,`cv2.calcHist()`函数用于计算直方图,`cv2.compareHist()`函数用于计算相似度,`plt.plot()`和`plt.bar()`函数用于绘制直方图和相似度条形图。
使用时,只需将`image1.jpg`和`image2.jpg`替换成要比较的两张图片的文件名即可。运行代码后,会显示出两张图片的直方图和它们的相似度。相似度越大,表示两张图片越相似。
阅读全文