win窗口大小
//Size winSize = Size(64, 128);
窗口大小即在图像上滑动的窗口的大小。通常情况下,它应该比检测对象的尺寸稍大一些,以确保覆盖整个对象。常见的默认值是 64x128。就是要检测的目标大小,不是整张图的大小。
block大小
//Size blockSize = Size(16, 16);//块大小,用于将窗口划分为若干个块。每个块都会生成一个 HOG 特征向量。通常情况下,块的大小应该是细胞大小的整数倍。常见的默认值是 16x16。
//Size blockStride = Size(8, 8); //块的步长,即相邻块之间的偏移量。它决定了每个块之间的重叠程度。常见的默认值是 8x8。
cell大小
//Size cellSize = Size(8, 8);
特征数计算
return (size_t)nbins*
(blockSize.width/cellSize.width)*
(blockSize.height/cellSize.height)*
((winSize.width - blockSize.width)/blockStride.width + 1)*
((winSize.height - blockSize.height)/blockStride.height + 1);
inline void extractHOGFeatures(const Mat& image, vector<float> &hogDescriptor) {
Size winSize = Size(30, 30);
Size blockSize = Size(10, 10);
Size blockStride = Size(5, 5);
Size cellSize = Size(5, 5);
int nbins = 9;
// 创建 HOG 描述子计算器
HOGDescriptor hog(winSize, blockSize, blockStride, cellSize, nbins);
// 计算 HOG 特征
hog.compute(image, hogDescriptor);
}