TypeError:<unknown>不是cv2.calcOpticalFlowPyrLK()中的numpy数组</unknown>

时间:2012-06-01 15:11:09

标签: python opencv tracking opticalflow

我正在尝试使用python绑定在OpenCV 2.3.1中创建一个LK跟踪器。当我做的时候

calcOpticalFlowPyrLK(img1, img2,
                   template_pt, target_pt, status, err, 
                   (win_size_lk, win_size_lk), 0, TERM_CRITERIA_EPS, 
                   (TERM_CRITERIA_EPS | TERM_CRITERIA_COUNT, 10, 0.03), eig)

我正在

TypeError:不是一个numpy数组

,其中

img1, img2 - iplimage
template_pt, target_pt - A List consisting of tuples with two integers eg. [(120,140),(300,400),..]
win_size_lk = 10
eig = 0.001
status = ""
err = None

有关cv2.calcOpticalFlowPyrLK()的更多信息,请点击此处

http://opencv.itseez.com/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=opticalflow#cv.CalcOpticalFlowPyrLK

当我设置

eig = np.array([(0.0,1.0),(1.0,0.0)])

它给我以下错误

TypeError:只能将length-1数组转换为Python标量

这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

我已经找到了问题所在。

img1, img2 should be numpy array
template_pt, target_pt should be numpy array

所以,

target_pt, status, track_error = calcOpticalFlowPyrLK(img1, 
                  img2, 
                  template_pt, 
                  target_pt, 
                  winSize=(win_size_lk, win_size_lk), 
                  flags = OPTFLOW_USE_INITIAL_FLOW,
                  criteria = (TERM_CRITERIA_EPS | TERM_CRITERIA_COUNT, 10, 0.03))

效果很好。