我的图像大小为150像素高,188像素宽。我打算在这张图片上计算HOG。由于此描述符需要检测器窗口(图像)的大小为64x128,我应该将图像大小调整为64x128然后使用此描述符吗?像这样:
Image<Gray, Byte> GrayFrame = new Image<Gray, Byte>(_TrainImg.Size);
GrayFrame = GrayFrame.Resize(64, 128, INTER.CV_INTER_LINEAR);
我担心调整大小可能会改变原始渐变方向,具体取决于它是如何调整大小的,因为我们忽略了图像的宽高比?
顺便说一句,图像是破碎的,我不能再裁剪它了。这意味着这是裁剪后图像的大小,这是我的最终边界框。
答案 0 :(得分:0)
不幸的是,缺少openCV HoGDescriptor文档。
在openCV中,您可以更改检测窗口,单元格大小,blockStride和块大小的值。
cv::HOGDescriptor hogDesc;
hogDesc.blockSize = cv::Size(2*binSize, 2*binSize);
hogDesc.blockStride = cv::Size(binSize, binSize);
hogDesc.cellSize = cv::Size(binSize, binSize);
hogDesc.winSize = cv::Size(imgWidth, imgHeight);
然后使用
提取特征std::vector<float> descriptors;
std::vector<cv::Point> locations;
hogDesc.compute(img, descriptors, cv::Size(0,0), cv::Size(0,0), locations);
注意: