我是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
非常感谢。
答案 0 :(得分:4)
这不是真的。
对于compute
,第三个参数为Size winStride
,您可以使用最小值Size(1,1)
。
我猜你没有正确初始化HOGDescriptor hog
导致你无法运行。
猪的特征大小可以计算为
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));