बहुत धन्यवाद, अगर कोई भी मेरी मदद कर सकता है। इम कोशिश,, पुस्तक "अजगर के साथ जहाजों प्रोग्रामिंग कंप्यूटर विजन" का एक उदाहरण का उपयोग पृष्ठ के अंत में 216.ओपनसीवी पायथन कैल्क ऑप्टिकलफ्लोफ़र्नबैक
#!/usr/bin/env python
import cv2
def draw_flow(im,flow,step=16):
h,w = im.shape[:2]
y,x = mgrid[step/2:h:step,step/2:w:step].reshape(2,-1)
fx,fy = flow[y,x].T
# create line endpoints
lines = vstack([x,y,x+fx,y+fy]).T.reshape(-1,2,2)
lines = int32(lines)
# create image and draw
vis = cv2.cvtColor(im,cv2.COLOR_GRAY2BGR)
for (x1,y1),(x2,y2) in lines:
cv2.line(vis,(x1,y1),(x2,y2),(0,255,0),1)
cv2.circle(vis,(x1,y1),1,(0,255,0), -1)
return vis
cap = cv2.VideoCapture(0)
ret,im = cap.read()
prev_gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
while True:
# get grayscale image
ret,im = cap.read()
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
# compute flow
#flow = cv2.calcOpticalFlowFarneback(prev_gray,gray,None,0.5,3,15,3,5,1.2,0)
flow = cv2.calcOpticalFlowFarneback(prev_gray,gray,float(0),float(0),3,15,3,5,float(1),0)
prev_gray = gray
# plot the flow vectors
cv2.imshow('Optical flow',draw_flow(gray,flow))
if cv2.waitKey(10) == 27:
break
इम टर्मिनल में निष्पादित (LXUbuntu, lxterminal) और मैं पालन त्रुटि मिलती है:
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
Traceback (most recent call last):
File "hw.py", line 35, in <module>
flow = cv2.calcOpticalFlowFarneback(prev_gray,gray,None,0.5,3,15,3,5,1.2,0)
TypeError: a float is required
मैं समझता हूं कि समस्या calcOpticalFlowFarneback में है, क्योंकि इसे फ्लोट में एक संख्या की आवश्यकता है, इसलिए, मैं calcOpticalFlowFarneback (prev_gray, ग्रे, कोई नहीं, फ्लोट (0.5), 3,15,3,5, फ्लोट (1.2)), 0) लेकिन काम नहीं करते हैं।
बहुत बहुत धन्यवाद।
का उपयोग करना चाहिए "एक नाव की आवश्यकता है" शायद गैर की चर्चा करते हुए किया जाएगा तर्क सूची में फ्लोट, गैर-int तर्क .. – asheeshr