使用openCV提取HOG功能

时间:2014-02-17 15:34:16

标签: c++ opencv

我是OpenCV的新手。以前我使用Matlab从9x9像素的图像计算HOG特征。在Matlab中,当我使用9 bin直方图时,我得到了9个值的特征向量。但在OpenCV中,第一个问题是我无法运行:

d.compute(imROI, descriptorsValues,Size(9,9),Size(0,0),locs); 

似乎9x9图像小于允许的最小尺寸,是真的吗?

其次,有人可以解释一下我的所有输入参数:

compute(const Mat& img, vector<float>& descriptors,
         Size winStride, Size padding,
         const vector<Point>& locations) const

非常感谢。

1 个答案:

答案 0 :(得分:4)

似乎9x9图像小于允许的最小尺寸,是真的吗?

这不是真的。

对于compute,第三个参数为Size winStride,您可以使用最小值Size(1,1)

我猜你没有正确初始化HOGDescriptor hog导致你无法运行。


如果你想只获得8个imroI大小的值是9x9?

猪的特征大小可以计算为

num_of_hog_features = (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);

因此,为了获得hog功能的8值,您可以按如下方式设置参数:

HOGDescriptor *hog=new HOGDescriptor(cvSize(9,9),cvSize(9,9),
                                     cvSize(9,9),cvSize(9,9),8);
vector<float> descriptors;
hog->compute(imROI, descriptors,Size(1,1), Size(0,0));