OpenCV Python和面向渐变的直方图

时间:2011-10-04 00:52:50

标签: python image-processing opencv numpy gradient

在Python OpenCV中使用HOGDescriptor功能是否有任何有用的文档?我已经阅读了C ++文档,但Python版本的功能不同,我无法通过修补来解决它。

最具体地说,我在Python中寻找一个OpenCV命令,它将一个图像和一个像素位置作为输入(可能还有一些关于检测窗口大小的参数),然后只返回一个包含HOG特征的Python数组vector(即列表或NumPy数组等,其中列表的第j个元素是面向渐变直方图的第j个直方图分量)。

我的目标是将这些直方图提供给scikits.learn SVM管道(所以我可以避免OpenCV SVM培训),但要做到这一点,我需要实际的特征向量本身而不是那种HOG处理链管道的东西OpenCV似乎使用。

HOG代码的任何其他Python实现也会起作用。我需要一些合理有效的东西,但要与我自己编写的另一个代码库进行比较。

4 个答案:

答案 0 :(得分:5)

这有点晚了,但为了将来参考,scikit-image的实施时间为HOG。这是一个单一的函数,可以提取给定图像的方向梯度直方图。

答案 1 :(得分:0)

看一下http://sourceforge.net/projects/hogtrainingtuto/?_test=beta的一些HOG python代码和一堆C,cpp,java实现。至于python和opencv的真实文档,我也不知所措。但这应该对你有所帮助

答案 2 :(得分:0)

Matlab

属于这个article作为灵感的{{3}}

答案 3 :(得分:0)

'Poselets'实现here有一个HOG描述符的C实现,尽管用matlab编写,但可以使用ctypes和numpy来适应python。

您可以删除所有mex例程,并在C函数中将输入和输出数组声明为float *

你需要确保你的numpy数组是Fortran连续的。这可以通过以下方式实现:

image = image.copy(order='F', dtype = float32)