cv2.calcOpticalFlowPyrLK を使用して、Python でオプティカル フローの Lucas-Kanade アルゴリズムを実装しようとしています。ただし、現在のポイントと前のポイント、およびポイント自体を接続する線を描画しようとすると、関数は None を返します。
ここにコードがあります
#draw the overlaying tracking img
for i,(new,old) in enumerate(zip(good_new,good_old)):
a,b = new.ravel() #tmp new value
c,d = old.ravel() #tmp old value
#draws a line connecting the old point with the new point
mask = cv2.line(mask,(a,b),(c,d),color[i].tolist(),2) #returns None... why??
#draws the new point
frame = cv2.circle(frame,(a,b),5,color[i].tolist(),-1) #returns None... why??
img = cv2.add(frame,mask)
#show on window
cv2.imshow("frame",img)
a、b、c、d は numpy.float32 です
フレームは、ウェブカメラから読み取った値です
マスクはゼロの配列に初期化されています
色はランダムな配列です
これは、imshow を実行しようとしたときに表示されるエラー メッセージです。
error: /Users/vagrant/pisi-64bit/tmp/opencv-2.4.5-2/work/opencv-2.4.5/modules/core/src/array.cpp:2482: error: (-206) Unrecognized or unsupported array type in function cvGetMat
本当に助かりました!