OpenCV + Python + HOG“计算”功能的正确位置参数

时间:2013-11-16 16:52:10

标签: python opencv

我正在运行OpenCV 2.4.6和Python 2.7,我刚接触Python编程。
我需要打电话给"计算"我的Python脚本中的HoGDescriptor类的功能 其中一个参数是计算(并返回)hog描述符的位置 在c ++中,这个参数是vector&类型。但是,在Python中,我尝试了一些阵列或垫子组合,但它没有用 我复制下面的代码(它非常简单)。

import numpy as np  
import cv2  

# read INRIAPerson sample  
i = cv2.imread('crop_000023a.png',0)  
hog = cv2.HOGDescriptor()  

# let say I want to caculate hog descriptors in the roi
# being at (2,3) position of the image  
r=[1,2]  
descriptors = hog.compute(i,hog.blockStride,hog.cellSize,r)  

我收到此错误

  

TypeError Traceback(最近一次调用最后一次)
   in()
  ----> 1个描述符= hog.compute(i,hog.blockStride,hog.cellSize,r)
  TypeError:locations

如果我做的话

r=mat([1,2]) or r=array([1,2]) or r=array([1,2],ndmin=2)  

它崩溃了。

有没有人知道如何在Python中将正确的参数传递给这个函数?

提前致谢,

Pablo Negri

2 个答案:

答案 0 :(得分:0)

您是否有可能尝试计算过于接近图像边界的描述符? 尝试将r设置为距图像边界至少8像素的位置。

答案 1 :(得分:0)

首先,让我们检查hog.compute是否有一些文档:

>> print hog.compute.__doc__

给出:

compute(img[, winStride[, padding[, locations]]]) -> descriptors
嗯,也许我们应该将locations设置为一个元组元组?让我们试一试:

r = ((100, 200), ) # for now let's stay away from the boundaries
descriptors = hog.compute(i, hog.blockStride, hog.cellSize, r)
print descriptors.shape 

我们确实得到了:

(3780, 1)

瞧!问题解决了。