HOG全图特征提取python代码
时间: 2023-10-30 07:02:47 浏览: 162
MNIST手写数字识别库及图片提取代码
3星 · 编辑精心推荐
以下是用Python实现的HOG全图特征提取代码:
```python
import cv2
import numpy as np
# 定义HOG函数
def hog(img):
# 图像大小统一
img = cv2.resize(img, (64, 128))
# 计算梯度
gx = cv2.Sobel(img, cv2.CV_32F, 1, 0)
gy = cv2.Sobel(img, cv2.CV_32F, 0, 1)
mag, ang = cv2.cartToPolar(gx, gy)
# 划分cell
bin_n = 16
bin = np.int32(bin_n*ang/(2*np.pi))
# 划分block
bin_cells = bin[:32,:16], bin[32:,:16], bin[:32,16:], bin[32:,16:]
mag_cells = mag[:32,:16], mag[32:,:16], mag[:32,16:], mag[32:,16:]
hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)]
hist = np.hstack(hists)
# 归一化
eps = 1e-7
hist /= hist.sum() + eps
return hist
# 读取图像
img = cv2.imread('test.jpg',0)
# 提取特征
hist = hog(img)
```
其中,`cv2.resize`函数将图像大小统一为64×128,`cv2.Sobel`函数计算图像的梯度,`cv2.cartToPolar`函数计算梯度的大小和方向,`np.int32`函数将方向转换为整数类型,`np.bincount`函数统计每个方向上的像素个数,最后将所有方向的直方图拼接在一起,归一化后得到全图的HOG特征。
阅读全文