我使用的是 Windows 7 64 位、Visual Studio 2010、opencv 2.4.2。
我正在尝试使用 GPU hog 检测器。
现在我可以使用我自己的 CPU hog 检测器(我训练过的版本)。
我的 pig 的单元格大小为 Size(4,4)
。
但是,在 opencv/modules/gpu/src/cuda/hog.cu 中,它指出
// Other values are not supported
#define CELL_WIDTH 8
#define CELL_HEIGHT 8
或者,在 opencv/modules/gpu/src/hog.cpp 中,在
cv::gpu::HOGDescriptor::HOGDescriptor( ... ) { ... CV_Assert(cell_size == Size(8, 8)); ... }
我认为这就是我的程序崩溃的原因。但是我不想使用单元格大小 8。如何将其更改为 4?
最佳答案
您有几个选择...
打开OpenCV HOG code并破解 8x8 约束。将
#define
语句从 8x8 更改为 4x4,并删除断言语句。重新编译 OpenCV 代码,然后运行您的应用程序。看看会发生什么......也许它会起作用。如果 OpenCV 代码中的快速破解不起作用,还有其他开源 GPU HOG 实现,例如:fastHOG和 GroundHOG
如果以上想法都不起作用,您可以在 CUDA 或 OpenCL 中编写自己的 GPU HOG 代码。手写的 HOG 实现可以相当简洁,特别是如果您针对特定情况对像元大小和其他尺寸进行硬编码的话。但是,如果您是新手,GPU 编程可能需要一些时间来学习。
此外,我应该确保——如果您使用 8x8 单元运行,OpenCV HOG 也能正常运行,对吗?
关于c++ - OpenCV GPU HOG 检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13121440/