用直方图设置阈值代码统计两张图片的相似度
时间: 2023-09-20 14:04:34 浏览: 49
好的,以下是用 Python 代码实现的步骤:
1. 导入所需的库
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
```
2. 定义计算直方图相似度的函数
```python
def hist_similarity(img1, img2):
# 计算图像直方图
hist1 = cv2.calcHist([img1], [0], None, [256], [0, 256])
hist2 = cv2.calcHist([img2], [0], None, [256], [0, 256])
# 归一化直方图
cv2.normalize(hist1, hist1, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX)
cv2.normalize(hist2, hist2, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX)
# 计算直方图相似度
similarity = cv2.compareHist(hist1, hist2, cv2.HISTCMP_CORREL)
return similarity
```
3. 加载两张图片并计算相似度
```python
# 加载图片
img1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)
# 计算直方图相似度
similarity = hist_similarity(img1, img2)
# 输出相似度
print(f'The similarity between the two images is {similarity}')
```
其中,`image1.jpg` 和 `image2.jpg` 是要比较的两张图片,需放在代码所在目录下。
4. 可视化直方图
如果需要可视化直方图,可以添加以下代码:
```python
# 可视化直方图
plt.subplot(2, 1, 1)
plt.imshow(img1, cmap='gray')
plt.subplot(2, 1, 2)
plt.plot(hist1, color='r')
plt.plot(hist2, color='b')
plt.xlim([0, 256])
plt.show()
```
这段代码会将两张图片和它们的直方图在同一窗口中显示出来,方便比较。