2012-10-29 129 views
2

我使用的是Windows 7 64bit,visual studio 2010,opencv 2.4.2。OpenCV GPU HOG检测

我正在尝试使用GPU生猪探测器。

现在我可以使用我自己的CPU生猪探测器(我的培训版本)。

我的猪的细胞大小为Size(4,4)

然而,在OpenCV中/模块/ GPU/SRC/CUDA/hog.cu,它指出

// Other values are not supported 
    #define CELL_WIDTH 8 
    #define CELL_HEIGHT 8 

,或者在OpenCV的/模块/ GPU/SRC/hog.cpp,在

cv::gpu::HOGDescriptor::HOGDescriptor(...) { ... CV_Assert(cell_size == Size(8, 8)); ... } 

我认为这就是为什么我的程序崩溃的原因。但是我不想使用单元格大小8.我如何将它变为4?

回答

4

你有几个选项...

  • 开拓OpenCV HOG code和周围的8×8约束破解。将#define语句从8x8更改为4x4,并摆脱assert语句。重新编译OpenCV代码,并运行您的应用程序。看看会发生什么......也许它会起作用。

  • 如果在OpenCV的代码快速黑客无法正常工作,还有其他的开源GPU HOG实现,例如:fastHOGGroundHOG

  • 如果没有上述工作思路,你可以在CUDA或OpenCL中编写自己的GPU HOG代码。手写的HOG实现可以相当简洁,特别是如果您为特定情况硬编码单元大小和其他维度。但是,如果你是新手,GPU编程可能需要一些时间来学习。

此外,我应该确保 - 如果您使用8x8单元运行,OpenCV HOG运行正确吗?