8
我试图使用OpenCV的HOG描述符,但从中计算出的特征向量似乎太长了。下面是一个说明该问题的片段:为什么opencv的HOG描述符返回如此多的值
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <stdlib.h>
#include <vector>
int main()
{
cv::Mat image = cv::imread("1.jpg");
std::vector<float> features;
cv::HOGDescriptor hogdis;
hogdis.compute(image, features);
printf("HOG feature's length is %zu %zu\n", hogdis.getDescriptorSize(), features.size());
return 0;
}
输出是
HOG feature's length is 3780 1606500
后者的价值似乎很荒谬。图像1.jpg
的尺寸为256x256x3,其像素少于特征向量。为什么OpenCV用这么多值填充特征向量?如何获得3780长矢量以供给我的SVM教练?
但为什么'hogdis.getDescriptorSize()'和'features.size()'不一致? –
@ C.R。查看更新后的答案。 – herohuyongtao
您提供的公式完全独立于图像大小。但是,当我尝试尺寸为690x622的图像时,特征矢量具有18514440个元素,与上面的1606500不同。另外,特征向量比像素总数要多,更不用说超过40倍。 –