Python项目||提取图片的HOG特征并可视化

项目简介

该项目利用OpenCV和skimage库实现了图像处理和HOG特征提取,并使用matplotlib库进行图像显示。通过对图像进行处理和特征提取,可以用于图像分类等领域。

项目特点

  1. 使用OpenCV进行图像处理,包括读取图片、颜色格式转换、尺寸缩放等。
  2. 利用skimage库提取图像的HOG特征,并可视化展示。
  3. 使用matplotlib库实现图像显示,包括灰度图和HOG特征图

实现步骤:

读取图片并进行尺寸缩放。
将图片从BGR格式转换为RGB格式以适应matplotlib显示。
将图片转换为灰度图。
提取图像的HOG特征并进行可视化展示

使用技术:

  • OpenCV:用于图像处理,包括读取图片、颜色格式转换等。
  • skimage:用于提取图像的HOG特征。
  • matplotlib:用于图像显示和可视化。

项目用途:

姿势识别:通过提取HOG特征,可以用于手部姿势识别。
目标检测:HOG特征在目标检测领域有着广泛的应用。
图像分析:利用图像处理和特征提取技术,可以进行图像分析和识别。

使用说明:

需要安装OpenCV、skimage和matplotlib库。
图片路径需要根据实际情况进行修改。
可根据需求调整HOG特征提取参数,如 orientations、pixels_per_cell 和 cells_per_block。

案例代码:

# 导入OpenCV库,用于图像处理
import cv2
# 导入matplotlib库,用于图像显示
import matplotlib.pylab as plt

import numpy as np
# 导入skimage, 用于提取HOG特征
from skimage.feature import hog
# 导入skimage的数据和曝光模块, 用于图像处理
from skimage import data, exposure



def im_read(filePath):
    """
    读取图片, 支持中文路径格式
    Args:
        filePath: 图片路径
        return: img
    """
    raw_path = np.fromfile(filePath, dtype=np.uint8)
    img = cv2.imdecode(raw_path, -1)
    return img

def cv2show_img(img, img_name=None) :
    """
    显示图片使用OpenCV
    """
    # 保存图片
    
    cv2.imshow(img_name, img)
    cv2.imwrite("1.png", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

def pltshow_img(img, img_name=None) :
    """
    显示图片使用matplotlib
    """
    # 去掉网格线
    plt.rcParams['axes.unicode_minus'] = False
    plt.figure(img_name)
    plt.imshow(img)
    # plt.grid(False)  # 去掉网格线
    plt.axis('off')  # 去掉坐标轴
    plt.savefig("2")  # 保存图片
    plt.show()

if __name__ == "__main__":

    # 读取图片
    img = im_read(r"D:/01_OneFlowTech/Repo2/Kaggle猫狗大战/test1/test1/7.jpg")
    img = cv2.resize(img, (224, 224))    # 将图片进行缩放


    # 将图片从BGR格式转换为RGB格式, 以适应matplotlib显示
    img_fixed = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)           # BGR->RGB
    pltshow_img(img_fixed)

    # 将图片转换为灰度图
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)           # BGR->GRAYS
    cv2show_img(img_gray)

    # 提取图像的HOG特征并可视化
    fea_val, hog_img = hog(image=img_gray, 
                    orientations=9, 
                    pixels_per_cell=(8,8),
                    cells_per_block=(2, 2),
                    visualize=True
                    )
    # 创建子图,显示原始图片和HOG特征图
    fig, (ax1, ax2) = plt.subplots(1, 2, 
                                figsize=(10, 5), 
                                sharex=True, 
                                sharey=True)
    ax1.axis('off')
    ax1.imshow(img_fixed)
    ax1.set_title("src_img")
    # 调整HOG特征图的亮度范围以更好地显示颜色
    hog_image_rescaled = exposure.rescale_intensity(hog_img, in_range=(0, 20))
    ax2.axis('off')
    ax2.imshow(hog_image_rescaled, cmap=plt.cm.gray)
    ax2.set_title("Histogram of Oriented Gradients")
    plt.show()

原始图像

灰度化处理图像
提取HOG特征可视化对比图

注意事项

本项目仅为演示用途,未经过完整测试和优化,可能存在一定的局限性和不足之处。
如需商业应用或其他用途,请谨慎使用并自行承担风险。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易码杰研习社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值