接下来改用什么代码送入hog算子,提取列表images中的图片的特征?
时间: 2024-10-28 17:11:06 浏览: 13
在使用霍夫变换(Histogram of Oriented Gradients, HOG)计算图像特征之前,首先需要对图像进行预处理,如灰度化、归一化和分块。以下是使用OpenCV(cv2)进行HOG特征提取的一般步骤示例:
```python
import cv2
import numpy as np
def hog_feature_extraction(images):
# 设置HOG参数
cell_size = (16, 16) # 分块大小
block_size = (cell_size[0] * 8, cell_size[1] * 8) # 特征块大小
bins = 9 # 角度bins数
orientations = 9 # 角度方向数
pixels_per_cell = cell_size # 每个cell的像素点数
cells_per_block = block_size // cell_size # 特征块内的cell数
hog_descriptor_size = orientations * bins * cells_per_block[0] * cells_per_block[1]
features = []
for img in images:
# 将图像转为灰度
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 对图像进行均匀化(归一化)
gray_img_norm = cv2.equalizeHist(gray_img)
# 分割成小窗口(cells)
feature_matrix = []
for i in range(0, gray_img.shape[0], pixels_per_cell[0]):
for j in range(0, gray_img.shape[1], pixels_per_cell[1]):
# 提取子区域的HOG特征
feature_vector = cv2.HOGDescriptor().compute(gray_img_norm[i:i+cell_size[0], j:j+cell_size[1]], (block_size, block_size))
# 添加到特征矩阵中
feature_matrix.append(feature_vector.flatten()) # .flatten() 用于展平特征向量
# 将所有窗口的特征组合成单个特征向量
feature_vector = np.concatenate(feature_matrix)
# 存储特征向量
features.append(feature_vector)
return features
# 用这个函数处理images列表
features_list = hog_feature_extraction(images)
```
阅读全文