Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 利用openCV提取HOG特征_C++_Opencv - Fatal编程技术网

C++ 利用openCV提取HOG特征

C++ 利用openCV提取HOG特征,c++,opencv,C++,Opencv,我是OpenCV的新手。之前,我使用Matlab从9x9像素的图像计算HOG特征。在Matlab中,当我使用9位直方图时,我得到了9个值的特征向量。但在OpenCV中,第一个问题是我无法运行: d.compute(imROI, descriptorsValues,Size(9,9),Size(0,0),locs); 似乎9x9图像小于允许的最小尺寸,是真的吗 第二,请有人给我解释一下所有的输入参数: compute(const Mat& img, vector<float>

我是OpenCV的新手。之前,我使用Matlab从9x9像素的图像计算HOG特征。在Matlab中,当我使用9位直方图时,我得到了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
compute(常数矩阵和img、向量和描述符、,
大小,大小,填充,
常数向量和位置)常数
非常感谢。

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

对于,第三个参数是
Size
,您可以使用小于等于
Size(1,1)
的值

我猜您没有正确初始化
hog
,这导致您无法运行


如果只想得到8个值,imROI的大小是9x9? 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));
HOGDescriptor*hog=新的HOGDescriptor(cvSize(9,9),cvSize(9,9),
cvSize(9,9),cvSize(9,9),8);
向量描述符;
hog->compute(imROI,描述符,大小(1,1),大小(0,0));
似乎9x9图像小于允许的最小大小,是真的吗? 这不是真的。

对于,第三个参数是
Size
,您可以使用小于等于
Size(1,1)
的值

我猜您没有正确初始化
hog
,这导致您无法运行


如果只想得到8个值,imROI的大小是9x9? 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));
HOGDescriptor*hog=新的HOGDescriptor(cvSize(9,9),cvSize(9,9),
cvSize(9,9),cvSize(9,9),8);
向量描述符;
hog->compute(imROI,描述符,大小(1,1),大小(0,0));

谢谢您的回复。你能不能给我写一份完整的声明,从9x9图像中用8格直方图提取猪。我希望在feature vector(HoG feature)@user3319734中获得8个值。如果您只想获得8个值,请根据上述等式相应地设置值。imROI的大小是9x9,我运行这个:d.compute(imROI,描述符值,大小(32,32));(获取3780维特征向量)。如果我进一步减小大小,程序就会产生错误。我想不出这个问题。非常感谢!!!你能解释一下这句话是怎么说的吗:HOGDescriptor*hog=新的HOGDescriptor(cvSize(9,9),cvSize(9,9),cvSize(9,9),cvSize(9,9),8)@user3319734有关
HOGDescriptor
的参数,请参阅。感谢您的回复。你能不能给我写一份完整的声明,从9x9图像中用8格直方图提取猪。我希望在feature vector(HoG feature)@user3319734中获得8个值。如果您只想获得8个值,请根据上述等式相应地设置值。imROI的大小是9x9,我运行这个:d.compute(imROI,描述符值,大小(32,32));(获取3780维特征向量)。如果我进一步减小大小,程序就会产生错误。我想不出这个问题。非常感谢!!!你能解释一下这句话是怎么说的吗:HOGDescriptor*hog=新的HOGDescriptor(cvSize(9,9),cvSize(9,9),cvSize(9,9),cvSize(9,9),8)@user3319734有关
HOGDescriptor
的参数,请参阅。