M.Owen_ 2024-05-25 18:08 采纳率: 33.3%
浏览 7

Python实现hog特征图可视化

在这段代码的基础上 怎么能在第一张图上加上汽车那张图片中的彩条

img

img

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-25 18:08
    关注

    引自免费微信小程序:皆我百晓生

    在您提供的代码基础上,要在第一张图上添加汽车图片中的彩条,我们可以使用matplotlib库中的quiver函数来绘制箭头表示方向。首先,我们需要计算出HOG图中的梯度方向(x,y)坐标,然后在原图上绘制这些方向的箭头。以下是修改后的代码:

    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    from skimage.feature import hog
    
    # 读入图像
    img = cv2.imread('1.png')
    img1 = cv2.resize(img, (300, 300))
    
    # 将图像转换为RGB格式
    image1 = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
    plt.subplot(1, 2, 1)
    plt.imshow(image1)
    
    # 计算HOG特征
    orientations = 9
    pixels_per_cell = (8, 8)
    cells_per_block = (8, 8)
    block_norm = 'L2-Hys'
    transform_sqrt = True
    feature_vector = False
    visualize = True
    
    image2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    hog_features, hog_image = hog(image2, orientations, pixels_per_cell,
                                  cells_per_block, block_norm, transform_sqrt,
                                  visualize)
    
    # 提取HOG图像的方向和大小信息
    gradient_directions = hog_features[:, :, 0]
    gradient_magnitudes = hog_features[:, :, 1]
    
    # 定义箭头的位置、长度和方向
    width = 1
    height = 1
    start_x = -width / 2
    start_y = -height / 2
    end_x = width / 2
    end_y = height / 2
    
    # 在原图上添加彩条
    plt.quiver(image1.shape[1] // 2, image1.shape[0] // 2, gradient_directions * end_x, gradient_magnitudes * end_y,
               angles='xy', scale_units='xy', scale=1, width=width / 100, headwidth=3, headlength=5, color='r')
    
    plt.title("Image with HOG arrow directions")
    plt.show()
    

    这段代码会先显示原始彩色图像,然后在其右侧显示带有HOG特征的箭头图。注意,这个箭头图并不是在HOG特征图上,而是在原始图像上根据HOG特征计算出的方向和大小来绘制的。箭头的颜色是红色,宽度较小,头部宽度和长度适中,这样可以清晰地显示出HOG特征中的方向信息。

    如果你想要在HOG特征图上添加箭头,这可能不是最佳实践,因为HOG图通常用于机器学习模型,而不是直接用于视觉解释。但是,如果你坚持这样做,你需要将HOG图像调整到适当的比例,并在上面绘制箭头。这可能会导致箭头在视觉上难以理解,因为HOG图像通常是灰度的,且空间分辨率较低。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月25日