边缘检测生成各指标热力图代码
时间: 2024-11-24 11:42:09 浏览: 71
边缘检测是一种图像处理技术,常用于计算机视觉中,它主要用于找出图像中物体轮廓、边界或其他特征的变化区域。在Python中,常用OpenCV库来进行边缘检测,并可以结合Matplotlib绘制热力图来可视化这些检测结果。
以下是一个简单的例子,展示了如何使用Sobel算子进行边缘检测,并将结果转换成灰度图像表示的热力图:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 加载图像
img = cv2.imread('your_image.jpg', cv2.IMREAD_GRAYSCALE)
# 使用Sobel算子进行x和y方向的梯度计算
sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=5) # Sobel in x-direction
sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=5) # Sobel in y-direction
# 计算绝对值并组合为梯度幅值
grad_mag = np.sqrt(sobel_x**2 + sobel_y**2)
grad_mag = np.uint8(255 * grad_mag / np.max(grad_mag)) # 归一化到0-255范围
# 将梯度幅值转换为热力图(通常用红色代表强边缘,蓝色代表弱边缘)
heatmap = cv2.applyColorMap(grad_mag, cv2.COLORMAP_JET)
# 显示原始图像和热力图
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(heatmap)
plt.title('Edge Detection Heatmap'), plt.xticks([]), plt.yticks([])
plt.show()
阅读全文
相关推荐


















