【OpenCV】102 HOG特征描述子—提取描述子

102 HOG特征描述子—提取描述子

代码

import cv2 as cv

if __name__ == '__main__':
    src = cv.imread("../images/gaoyy_min.png")
    print(src.shape)
    hog = cv.HOGDescriptor()
    gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
    fv = hog.compute(gray, winStride=(8, 8), padding=(0, 0))
    print(len(fv))
    print(fv)
    cv.imshow("hog-descriptor", src)
    cv.waitKey(0)
    cv.destroyAllWindows()

实验结果

在这里插入图片描述

解释

对于HOG特征,我们可以通过预先训练的特征数据,进行多尺度的对象检测,OpenCV中基于HOG的行人检测是一个典型案例,同时我们还可以实现自定义对象的检测,这种自定义对象检测,可以分为两个部分,第一部分:通过提取样本的HOG描述子,生成样本的特征数据,第二部分通过SVM进行分类学习与训练,保存为模型。这样我们以后就可以通过模型来实现自定义对象检测啦。今天我们首先分享第一部分,提取HOG描述子。OpenCV中提取HOG描述子的API表示如下:

cv.HOGDescriptor.compute(img, winStride=None, padding=None, locations=None)

输入图像大小WxH=72x128
默认的HOG描述子窗口大小为64x128,窗口移动的步长8x8
对于每个窗口内部,每个Cell大小是8x8的,所以窗口可以划分为8x16的Cells大小
对于每个Block区域来说,每次移动步长是一个Cell,8x16Cells可以得到总数7x15个Block
每个Block都是4个Cell, 36个向量,所以对于输入图像得到:
7x15x36x2 = 7560个特征描述子,这些描述子可以作为浮点数特征数据,对于需要输入的样本图像来说,需要首先执行以下预处理,把图像大小resize为跟窗口大小一致或者把窗口resize跟图像大小一致,这样有利于下一步处理。
在这里插入图片描述


所有内容均来源于贾志刚老师的知识星球——OpenCV研习社,本文为个人整理学习,已获得贾老师授权,有兴趣、有能力的可以加入贾老师的知识星球进行深入学习。
在这里插入图片描述

发布了120 篇原创文章 · 获赞 0 · 访问量 1835

猜你喜欢

转载自blog.csdn.net/liu_taiting/article/details/105038557